SQLite是一款轻量级数据库管理系统,广泛应用于移动设备和嵌入式设备等领域。在Android开发中,SQLite数据库也是常用的存储方式之一,本文将介绍SQLite数据库在Android开发中的基本流程。
一、准备工作
在使用SQLite数据库之前,需要先进行以下准备工作:
1. 添加依赖库
在项目的build.gradle文件中添加以下代码:
```groovy
dependencies {
implementation 'androidx.room:room-runtime:2.3.0'
implementation 'androidx.room:room-ktx:2.3.0'
annotationProcessor 'androidx.room:room-compiler:2.3.0'
}
```
2. 创建数据库和数据表
创建SQLite数据库需要通过构造函数实例化一个SQLiteOpenHelper的子类,重写onCreate()方法,用来创建数据表。
```kotlin
class MyDatabaseHelper(context: Context) :
SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
const val DATABASE_VERSION = 1
const val DATABASE_NAME = "MyDatabase.db"
const val TABLE_NAME = "MyTable"
const val COLUMN_ID = "_id"
const val COLUMN_NAME = "name"
}
override fun onCreate(db: SQLiteDatabase) {
db.execSQL(
"CREATE TABLE IF NOT EXISTS $TABLE_NAME (" +
"$COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"$COLUMN_NAME TEXT NOT NULL)"
)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
db.execSQL("DROP TABLE IF EXISTS $TABLE_NAME")
onCreate(db)
}
}
```
二、增删改查操作
1. 增加数据
在SQLite数据库中添加数据需要使用insert()方法,第一个参数是数据表名称,第二个参数是空列的列名,第三个参数是要添加的数据。
```kotlin
fun insertData(name: String): Boolean {
val db = helper.writableDatabase
val values = ContentValues().apply {
put(MyDatabaseHelper.COLUMN_NAME, name)
}
val result = db.insert(MyDatabaseHelper.TABLE_NAME, null, values)
return result != -1L
}
```
2. 删除数据
在SQLite数据库中删除数据需要使用delete()方法,第一个参数是数据表名称,第二个参数是删除条件,第三个参数是删除条件的值。
```kotlin
fun deleteData(id: Long): Boolean {
val db = helper.writableDatabase
val whereClause = "${MyDatabaseHelper.COLUMN_ID} = ?"
val whereArgs = arrayOf(id.toString())
val result = db.delete(MyDatabaseHelper.TABLE_NAME, whereClause, whereArgs)
return result > 0
}
```
3. 修改数据
在SQLite数据库中修改数据需要使用update()方法,第一个参数是数据表名称,第二个参数是修改的内容,第三个参数是修改条件,第四个参数是修改条件的值。
```kotlin
fun updateData(id: Long, name: String): Boolean {
val db = helper.writableDatabase
val values = ContentValues().apply {
put(MyDatabaseHelper.COLUMN_NAME, name)
}
val whereClause = "${MyDatabaseHelper.COLUMN_ID} = ?"
val whereArgs = arrayOf(id.toString())
val result = db.update(MyDatabaseHelper.TABLE_NAME, values, whereClause, whereArgs)
return result > 0
}
```
4. 查询数据
在SQLite数据库中查询数据需要使用query()方法,第一个参数是数据表名称,第二个参数是要查询的列名,第三个参数是查询条件,第四个参数是查询条件的值,第五个参数是分组条件,第六个参数是排序条件。
```kotlin
fun queryData(): List
val db = helper.readableDatabase
val projection = arrayOf(MyDatabaseHelper.COLUMN_NAME)
val sortOrder = "${MyDatabaseHelper.COLUMN_NAME} DESC"
val cursor = db.query(MyDatabaseHelper.TABLE_NAME, projection, null, null, null, null, sortOrder)
val nameList = mutableListOf
with(cursor) {
while (moveToNext()) {
val name = getString(getColumnIndexOrThrow(MyDatabaseHelper.COLUMN_NAME))
nameList.add(name)
}
close()
}
return nameList
}
```
三、使用实例
在MainActivity中调用以上方法,即可实现数据的增删改查操作。
```kotlin
class MainActivity : AppCompatActivity() {
private lateinit var dbHelper: MyDatabaseHelper
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
dbHelper = MyDatabaseHelper(this)
insertButton.setOnClickListener {
val name = nameEditText.text.toString()
if (dbHelper.insertData(name)) {
Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show()
}
}
deleteButton.setOnClickListener {
val id = idEditText.text.toString().toLong()
if (dbHelper.deleteData(id)) {
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show()
}
}
updateButton.setOnClickListener {
val id = idEditText.text.toString().toLong()
val name = nameEditText.text.toString()
if (dbHelper.updateData(id, name)) {
Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show()
}
}
queryButton.setOnClickListener {
val nameList = dbHelper.queryData()
Toast.makeText(this, nameList.toString(), Toast.LENGTH_SHORT).show()
}
}
override fun onDestroy() {
super.onDestroy()
dbHelper.close()
}
}
```
以上即为SQLite数据库在Android开发中的基本流程。