美文网首页
android数据存储之持久化技术(三)SQLite数据库

android数据存储之持久化技术(三)SQLite数据库

作者: 别看后面有人 | 来源:发表于2021-07-03 21:54 被阅读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"))
            }

    相关文章

      网友评论

          本文标题:android数据存储之持久化技术(三)SQLite数据库

          本文链接:https://www.haomeiwen.com/subject/hvpuultx.html