每日日报

SQLite简介

亮点:
 ① 轻   轻量级数据库 SQLite和C/S模式的数据库软件不同 体积小 没有服务端客户端 只要一个动态库就可以工作 (Linux下300多K)
 ② 绿   核心引擎本身不依赖第三方的软件,不需要安装 拷贝即可使用
 ③ 单一文件 一个数据库只有一个文件 
 ④ 跨平台  支持多个嵌入式设备
槽点:
        ① 多线程性能差
        ② 不支持全部的SQL
 
何时使用数据库保存数据: 当有大量结构相似的数据需要保存 比如 短信 电话本 聊天记录
 

 Android下创建SQLite数据库

    1 核心类

            ① SQLiteOpenHelper
      ② SQLiteDataBase   

  2 使用方法

              第一步: 创建一个类继承 SQLiteOpenHelper  并实现父类的构造
            
  1. public class MySQLOpenHelper extends SQLiteOpenHelper {
  2. public MySQLOpenHelper(Context context) {
  3. /**第一个参数 上下文
  4. 第二个参数 创建的数据库文件名字
  5. 第三个参数 游标工厂 通过游标工厂可以获得执行查询语句的返回值 Curor
  6. 可以传 null 采用默认的游标工厂
  7. 第四个参数 数据库的版本号 从1开始
  8. **/
  9. super(context, "itheima.db", null, 1);
  10. }
                第二步  从写onCreate 方法 和onUpgrade 方法
                第三步  在Activity中 创建MySQLOpenHelper对象( 注意 !!!! 至此并没有创建数据库)
                第四部  调用 MySQLOpenHelper的getReadableDatabase或getWriteableDatabase方法获取SQLiteDataBase对象
 
  1. public class MainActivity extends Activity {
  2. private SQLiteDatabase db;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. MySQLOpenHelper openHelper = new MySQLOpenHelper(this);
  8. //获取SQLiteDatabase对象 如果数据库不存在则创建 如果存在则打开 如果磁盘空间满则出错
  9. db = openHelper.getWritableDatabase();
  10. //与getWritableDatabase功能类似 但如果磁盘空间满则会返回一个只读的数据库
  11. db = openHelper.getReadableDatabase();
  12. }

 SQLiteOpenHelper的oncreate方法 和 onUpgrade方法

  onCreate方法(必须实现的方法)

        当调用getReadableDatabase或getWriteableDatabase方法 第一次创建数据库的时候会执行这个方法
        作用: 在这个方法中做创建表 和初始化数据的操作
  1. @Override
  2. public void onCreate(SQLiteDatabase db) {
  3. //适合做创建表 初始化数据的操作
  4. db.execSQL("create table info (_id integer primary key autoincrement, name varchar(20),phone varchar(20))");
  5. }
 

      onUpgrade方法(必须实现的方法)

         当调用getReadableDatabase或getWriteableDatabase方法时 如果数据库版本号变大 则会调用这个方法
         作用: 在这个方法中做数据库或表结构修改的操作 比如给表添加字段 或给数据库增加新的表
  1. @Override
  2. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  3. //通过oldVersion 和newVersion 可以判断当前版本号和最新的版本号
  4. //真实开发环境可能会针对不同的数据库版本做不同的操作
  5. db.execSQL("alter table info add age integer");
  6. }

        onDowngrade方法(可选)

           当调用getReadableDatabase或getWriteableDatabase方法时 如果数据库版本号变小 则会调用这个方法
           作用: 处理数据库版本降级的操作 如果不重写这个方法 则默认数据库降级会抛异常
  1. @SuppressLint("NewApi") @Override
  2. public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  3. //处理数据库降级的需求 注意 super.onDowngrade 一定要删掉 否则如果数据库降级依然会抛异常
  4. //super.onDowngrade(db, oldVersion, newVersion);
  5. //一般很少做数据库降级的操作 不一定要实现
  6. }
  注意 :  onCreate onUpgrade 由系统调用 不需要手动调用
原文地址:https://www.cnblogs.com/zhukaile/p/14376737.html