原生Android sqlite的使用(一) 数据库创建升级等操作

SQLite特性

  • 是一款轻量级的关系型数据库
  • 无需安装即可使用
  • 原生就支持Android, 无需进行特殊操作
  • 可实现事务处理
  • 所有数据信息全部在一个文件夹内, 方便管理

 SQLite的使用

1, 先创建一个常量类用来保存数据库名称等信息

object DBConstants {
    const val DB_NAME = "tdbname"  //数据库名称
    const val DB_VERSION = 1       //数据库版本
    const val T_TABLE_NAME = "t_table_name"   //数据库表名
}

2,创建一个helper类用来继承SQLiteOpenHelper类, 并实现新建数据库和升级数据库的方法

class DataBaseHelper(context: Context?) : SQLiteOpenHelper(context, DBConstants.DB_NAME, null, DBConstants.DB_VERSION) {

    /**
     * 创建
     */
    override fun onCreate(db: SQLiteDatabase) {}

    /**
     * 更新
     */
    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {}
}

3,在onCreate(数据库新建之后,首先执行的方法)方法中添加新建表的sql

        val sql = "create table "+DBConstants.T_TABLE_NAME+"(_id integer,name varchar)"
        db.execSQL(sql)

    先测试一下数据库是不是能创建成功, 在app的登陆界面调用这个方法即可

    private fun initDB(){
        val helper = DataBaseHelper(applicationContext)
        helper.writableDatabase
    }

   用Android studio 自带的文件查看, 路径如下, 在data里找到自己项目所对应的的包名, 在包名路径下的 database路径为数据库地址

   用数据库工具打开即可看到表已经创建完成了, 说明数据库初始化并没有什么问题

4, onUpgrade方法(数据库更新方法,当数据库版本号不一致,执行方法内逻辑)

     将constants中的 DB_VERSION 值改为3, 然后在更新方法中添加以下代码, 这样写是为了处理实际生产环境中, 数据库版本可能跨版本的问题

 /**
     * 更新
     */
    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        var sqlArr = emptyArray<String>()
        var sql = ""
        when (oldVersion) {
            1 -> sqlArr = arrayOf("alter table " + DBConstants.T_TABLE_NAME + " add age integer",
                    "alter table " + DBConstants.T_TABLE_NAME + " add num varchar")

            2 -> sql = "alter table " + DBConstants.T_TABLE_NAME + " add num varchar"

            else -> sql = ""
        }
        //如果相差一个版本,执行一个sql, 如果相差多个版本需要对数组进行遍历,分别添加对应的sql
        //sqLite不支持一次添加多列
        if (newVersion - oldVersion == 1) {
            db.execSQL(sql)
        } else {
            sqlArr.forEach {
                db.execSQL(it)
            }
        }
    }

运行之后,可以看到,两个字段已经同时加进去了 

数据库增删改查的使用请参考下一篇文章

原生Android sqlite的使用(二) 数据库的增删改查

 
发布了181 篇原创文章 · 获赞 68 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/wx_lanyu/article/details/103415979