android数据存储之持久化技术(三)SQLite数据库
2021-07-03 本文已影响0人
别看后面有人
SQLite数据库存储
SQLite是一款轻量级的数据库,它的运行速度快,占用资源少,当需要大量复杂的关系型数据的时候,SQLite数据库就很有用了
一、创建数据库
class MyDataSqliteHelper(val context: Context,name:String,version:Int):SQLiteOpenHelper(context,name,null,version) {
private val createBook="create table Book("+
"id integer primary key autoincrement,"+
"autor text,"+
"price real,"+
"pages integer,"+
"name text)"
override fun onCreate(db: SQLiteDatabase?) {
db!!.execSQL(createBook)
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
TODO("Not yet implemented")
}
}
SQLiteOpenHelper中有两个构造方法可以重写,一般用参数少的即可。构造方法中接收四个参数,第一个context,第二个参数数据库的名称,第三个参数允许我们在查询数据的时候返回一个自定义的Cursor,一般传入null即可,第四个参数为当前数据库的版本号,可以对数据库进行升级操作。构建出SQLiteOpenHelper的实例之后,调用它的getReadDatabase()或者getWriteDatabase()方法创建数据库,数据库文件放在/data/data/<package name>/databases/目录下,
代码如下:
val dbHelper=MyDataSqliteHelper(this,"BookStore.db",1)
createData.setOnClickListener {
dbHelper.writableDatabase
}
还是通过工具Device File Explorer查看,在databases下面多了一个BookStore.db的文件,是无法查看Book表,因此需要借助Database Navigator的插件工具,然后在studio左侧的DB Browser查看数据
二、向数据库表中添加数据
val db=dbHelper.writableDatabase
val values=ContentValues().apply {
put("name","code")
put("author","demo")
put("pages",10)
put("price",12)
}
db.insert("Book",null,values)
val values2=ContentValues().apply {
put("name","code1")
put("author","demo1")
put("pages",10)
put("price",12)
}
db.insert("Book",null,values2)
三、查询数据库表中的数据
queryData.setOnClickListener {
val db=dbHelper.writableDatabase
val cursor=db.query("Book",null,null,null,null,null,null)
if (cursor.moveToFirst()){
do {
val name=cursor.getString(cursor.getColumnIndex("name"))
val author=cursor.getString(cursor.getColumnIndex("author"))
val pages=cursor.getInt(cursor.getColumnIndex("pages"))
val price=cursor.getDouble(cursor.getColumnIndex("price"))
}while (cursor.moveToNext())
}
cursor.close()
}
四、删除数据库表中的数据
deleteData.setOnClickListener {
val db=dbHelper.writableDatabase
db.delete("Book","pages > ?", arrayOf("500"))
}
五、修改数据库表中的数据
upgrateData.setOnClickListener {
val db=dbHelper.writableDatabase
val values=ContentValues()
values.put("price",10.88)
db.update("Book",values,"name = ?", arrayOf("codes"))
}