布局文件略过,就是五个按钮,点击按钮执行对应的功能。
Android 专门提供了一个SQLiteOpenHelper帮助类来对数据库进行创建和升级。
自己创建一个类继承自SQLiteOpenHelper,重新写onCreate()方法和onUpgrade()方法,分别对应创建数据库和升级数据库。
还有两个非常重要的方法:getReadableDatabase()和getWritableDatabase(),它们都可以创建或者打开一个现有的数据库。
insert()方法用于添加数据。
update()方法用于对数据进行更新。
delete()方法用来删除数据。
query()方法用来查询数据,返回的是一个Cursor对象。
主代码文件内容如下:
package com.example.databasetestimport android.annotation.SuppressLint
import android.content.ContentValues
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Buttonclass MainActivity : AppCompatActivity() {@SuppressLint("SuspiciousIndentation")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//下面的是数据库相关的代码//创建数据库val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)val createDatabase: Button =findViewById(R.id.createDatabase)createDatabase.setOnClickListener{dbHelper.writableDatabase}//增加一条记录val addData:Button=findViewById(R.id.addData)addData.setOnClickListener{val db=dbHelper.writableDatabaseval values1=ContentValues().apply{//开始组装第一条数据put("name","The Da Vinci Code")put("author","Dan Brown")put("pages",454)put("price",16.96)}//插入第一条数据db.insert("Book",null,values1)//第二条数据val values2=ContentValues().apply{//开始组装第一条数据put("name","The Lost Symbol")put("author","Dan Brown")put("pages",510)put("price",19.95)}//插入第二条数据db.insert("Book",null,values2)}//更新一条记录,把书的价钱更改为10.99val updateData:Button=findViewById(R.id.updateData)updateData.setOnClickListener{val db=dbHelper.writableDatabaseval values=ContentValues()values.put("price",10.99)db.update("Book",values,"name= ?", arrayOf("The Da Vanci Code"))}//删除一条记录val deleteData:Button=findViewById(R.id.deleteData)deleteData.setOnClickListener{val db=dbHelper.writableDatabasedb.delete("Book","pages > ?",arrayOf("500"))}//查询数据,也是最复杂的一种,需要更多的精力来学习val queryData:Button=findViewById(R.id.queryData)queryData.setOnClickListener{val db=dbHelper.writableDatabase//查询表中所有的数据val cursor=db.query("Book",null,null,null,null,null,null)if(cursor.moveToFirst()){do{//遍历cursor对象,取出数据并打印val name=cursor.getString(cursor.getColumnIndex("name"))val author=cursor.getString(cursor.getColumnIndex("author"))val pages=cursor.getString(cursor.getColumnIndex("pages"))val price=cursor.getString(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()) }}}
}
直接用下面这种方法,可以直接操作数据库,感觉这种比较简单,但是容易出错。
db.execSQL("insert into Book (name, author, pages, price) values(?, ?, ?, ?)",arrayOf("The Da Vinci Code", "Dan Brown", "454", "16.96")
)
db.execSQL("insert into Book (name, author, pages, price) values(?, ?, ?, ?)",arrayOf("The Lost Symbol", "Dan Brown", "510", "19.95")
)//更新
db.execSQL("update Book set price = ? where name = ?", arrayOf("10.99", "The Da Vinci Code"))
//删除
db.execSQL("delete from Book where pages > ?", arrayOf("500"))
//查询
val cursor = db.rawQuery("select * from Book", null)
实际情况会比例子复杂多了,很多内容都需要深入研究的,本文只是能起到入门的作用。