Android 数据存储-本地数据库SQLite具体使用(参考代码)

Android 数据存储笔记-数据库SQLite

我最近做项目用到了这个SQLite本地数据库,所以写篇博客总结一下,希望也能对小白有所帮助

什么时候用SQLite(有固定规则的,大量的数据要保存时)

SharedPreferences是一种轻型的数据存储方式,在保存数据的时候其实存储的是key-value对,类似于Map。存储位置:/data/data/应用包名/shared_prefs/文件名.xml。通常用来存储一些简单的配置信息。实际开发中,SharedPreferences共享参数经常存储的数据有App的个性化配置信息、用户使用App的行为信息、临时需要保存的片段信息等。

简单且孤立的数据可保存在SharedPreferences。若是复杂且相互间有关的数据,则要保存在数据库中。(有固定规则的,大量的数据保存在数据库中)

文本形式的数据可保存在SharedPreferences。若是二进制数据,则要保存在文件中。(没有固定规则的,大量的数据保存在文件中)

haredPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其只能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。

SQLite是一个小巧的嵌入式数据库,使用方便、开发简单。它只是一个嵌入式的数据库引擎。在Android里,提供了SQLiteDatabase类,该类的一个对象就表明一个数据库,其实在底层就是一个文件。默认存储位置:/data/data//databases

SQLiteDatabase数据库管理类(直接对数据库进行操作)

SQLiteDatabase是SQLite的数据库管理类,开发者可以在活动页面代码或任何能取到Context的地方获取数据库实例。然后通过SQLiteDatabase提供的一些API来对数据库进行操作:

// 创建名叫test.db的数据库。数据库如果不存在就创建它,如果存在就打开它
SQLiteDatabase db = openOrCreateDatabase(getFilesDir() + "/test.db", Context.MODE_PRIVATE, null);
// 删除名叫test.db数据库
// deleteDatabase(getFilesDir() + "/test.db");

调用该类API要用到SQL语句,SQLite的多数SQL语法与Oracle一样,可以到菜鸟网上查阅:https://www.runoob.com/sqlite/sqlite-tutorial.html

SQLiteDatabase中常用的API:

  1. 管理类,用于数据库层面的操作。

    openDatabase:打开指定路径的数据库。 isOpen:判断数据库是否已打开。 close:关闭数据库。
    getVersion:获取数据库的版本号。 setVersion:设置数据库的版本号。

  2. 事务类,用于事务层面的操作。

    beginTransaction:开始事务。 setTransactionSuccessful:设置事务的成功标志。
    endTransaction:结束事务。执行本方法时,系统会判断是否已执行setTransactionSuccessful,如果之前已设置就提交,如果没有设置就回滚。

  3. 数据处理类,用于数据表层面的操作。

    execSQL:执行拼接好的SQL控制语句。一般用于建表、删表、变更表结构。 delete:删除符合条件的记录。
    update:更新符合条件的记录。 insert:插入一条记录。 query:执行查询操作,返回结果集的游标。
    rawQuery:执行拼接好的SQL查询语句,返回结果集的游标。
    但是直接通过SQLiteDatabase进行操作数据库非常不方便,必须小心不能重复地打开数据库,处理数据库的升级也很不方便。

因此Android提供了一个辅助工具—— SQLiteOpenHelper,我们可以通过SQLiteOpenHelper这个数据库帮助器来安全方便地打开、升级数据库。

SQLiteOpenHelper数据库帮助器(安全方便地打开、升级数据库)

使用方法:

新建一个继承自SQLiteOpenHelper的数据库操作类,提示重写onCreate和onUpgrade两个方法。

其中,onCreate方法只在第一次打开数据库时执行,在此可进行表结构创建的操作;

onUpgrade方法在数据库版本升高时执行,因此可以在onUpgrade函数内部根据新旧版本号进行表结构变更处理。

例如:

//数据库帮助器SQLiteOpenHelper
public class MySqliteHelper extends SQLiteOpenHelper {
   

    public MySqliteHelper(Context context,
                          String name,
                          SQLiteDatabase.CursorFactory factory,
                          int version) {
   
        super(context, name, factory, version);
    }
    public MySqliteHelper(Context context){
   
        super(context,Constant.DATABASE_NAME,null,Constant.DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
   
        // TODO 创建数据库后,对数据库的操作
     // sql中Constant是用来存放一些关于数据库的常量的类
     // 类型有:Integer、text文本、varchar(n)、real浮点型、blob二进制类型
        String sql = "create table if not exists "+Constant.TABLE_NAME+"("+
                Constant.ID+" Integer primary key ,"+
                Constant.USER+" text,"+
                Constant.DATE+" text,"+
                Constant.TIME+" text,";
        db.execSQL(sql);
    
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值