Android 数据库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/<PackageName>/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");

SQLiteDatabase中常用的API:

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

openDatabase:打开指定路径的数据库。

isOpen:判断数据库是否已打开。

close:关闭数据库。

getVersion:获取数据库的版本号。

setVersion:设置数据库的版本号。

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

beginTransaction:开始事务。

setTransactionSuccessful:设置事务的成功标志。

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

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

execSQL:执行拼接好的SQL控制语句。一般用于建表、删表、变更表结构。

delete:删除符合条件的记录。

update:更新符合条件的记录。

insert:插入一条记录。

query:执行查询操作,返回结果集的游标。

rawQuery:执行拼接好的SQL查询语句,返回结果集的游标。

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) {
        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);

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("drop table if exists " + Constant.TABLE_NAME);
    onCreate(db);

  }

  @Override
  public void onOpen(SQLiteDatabase db) {

    super.onOpen(db); // TODO 每次成功打开数据库后首先被执行 
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值