android开发,使用kotlin学习数据存储(三)

667 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情

调用MyDatabaseHelper类完成表的创建

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)
        dbHelper.writableDatabase
    }
}

(2)升级数据库

val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)

改为

val dbHelper=MyDatabaseHelper(this,"BookStore.db",2)

表示数据库升级

(3)添加数据

insert():专门用于添加数据。

第一个参数:表名

第二个参数:用于在未指定添加数据的情况下给某些可为空的列自动赋值给NULL,一般用不到这个功能,传入null即可。

第三个参数:ContentValues对象 ​ 步骤

获取SQLiteDatabase对象

val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)
val db=dbHelper.writableDatabase

使用ContentValues对要添加的数据进行组装

val values1=ContentValues().apply {
                put("name","The Da Vinci Code")
                put("author","Dan Brown")
                put("pages",454)
                put("price",16.96)
            }

调用insert()方法将数据添加到表中

db.insert("Book",null,values1)

(4)更新数据

updata():对数据进行更新。

参数:第一个参数:表名,指定更新哪张表的数据。

第二个参数:ContentValues对象,要把更新数据在这里组装进去。

第三、四个参数:用于约束更新某一行或某几行的数据,不指定的话默认会更新所有行。

步骤

获取SQLiteDatabase对象

val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)
val db=dbHelper.writableDatabase

构建ContentValues对象,并且给它指定一组数据,说明把价格这一系列的数据更新成10.99。

val values=ContentValues()
values.put("price",10.99)

调用SQLiteDatabase的updata()执行具体的更新操作。

 db.update("Book",values,"name=?", arrayOf("The Da Vinci Code"))

(5)删除数据

delete()方法:专门用于删除数据。

第一个参数:表名

第二、三个参数:用于约束删除某一行或者某几行的数据,不指定的话会默认删除所有行。

val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)
val db=dbHelper.writableDatabase
db.delete("Book","pages>?", arrayOf("500"))

(6)查询数据 步骤

获取SQLiteDatabase对象

val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)
val db=dbHelper.writableDatabase

调用query()方法后会返回一个Cursor对象,查询到的所有数据都可以从这个对象中取出。

val cursor=db.query("Book",null,null,null,null,null,null)
         //查询完后获得一个Cursor对象,接着我们调用它的moveToFirst()方法,
         //将数据的指针移动到第一行的位置,
         //然后进入一个循环当中,去遍历查询到的每一行数据
        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"))
                    Log.d("MainActivity","Book name is $name")
                    Log.d("MainActivity","Book author is $author")
                    Log.d("MainActivity","Book pages is $pages")
                    Log.d("MainActivity","Book price is $price")
              }while (cursor.moveToNext())
          }
          cursor.close()

4、使用SQL操作数据库

使用SQL来完成前面学过的CRUD操作。

添加数据:

db.execSQL("insert  into Book(name, author, pages, price)  values(?,?,?,?)",
array0f("The  Da  Vinci  Code","Dan  Brown","454","16.96")
)
db.execSQL("insert into Book(name, author, pages, price) values(?,?,?,?)",
array0f("The  Lost  Symbol","Dan  Brown","510","19.95")
)

更新数据:

db.execSQL("update Book set price=? where name=?",array0f("10.99","The Da Vinci Code"))

删除数据:

db.execSQL("delete  from Book where  pages>?",array0f("500"))

查询数据:

val cursor=db.rawQuery("select*from Book", null)