目录
一、概述
是一种轻量数据库,一般用于手机或者嵌入式设备中。
SQL:结构化查询语言。
在Android中我们一般继承于SQLiteOpenHelper进行SQLite的一个实现。
二、结果展示
demo效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1e800d769711406e807750453dbf7ab3.png
Android Studio自带工具查看数据库
在左下角
三、Sqlite使用和代码示例
创建SQLiteOpenHelper工具类
可以看到,我们创建了一个student表,主键id自增,属性有名字,学号,性别和成绩。
自带两个方法,一个是创建数据库,在这里可以进行创建表;一个是升级数据库,在这里可以更新数据库的版本,做一些操作。
class MySQLiteOpenHelper(
context: Context,
) : SQLiteOpenHelper(context,"mySQLite.db",null,1) {
val TABLE_STUDENT = "student"
val CREATE_TABLE_SQL = " create table if not exists $TABLE_STUDENT(id integer primary key autoincrement,name text,number text,gender text,score text)"
//创建
override fun onCreate(p0: SQLiteDatabase?) {
p0?.execSQL(CREATE_TABLE_SQL)
}
//升级数据库
override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {
}
}
增加数据
可以看到有两种方式对数据进行操作,一种是执行sql语句,还有一种是使用SQLite提供给我们的api进行操作。
fun insertData(stduent: Student): Long{
val db = this.writableDatabase
// db.execSQL("insert into $TABLE_STUDENT (name,number,gender,score) values('${stduent.name}','${stduent.number}','${stduent.gender}',${stduent.score})"
val values = ContentValues()
values.put("name",stduent.name)
values.put("number",stduent.number)
values.put("gender",stduent.gender)
values.put("score",stduent.score)
return db.insert(TABLE_STUDENT,null,values)
}
删除数据
fun deleteData(name: String): Int{
val db = this.writableDatabase
return db.delete(TABLE_STUDENT,"name = ? and score = ?", arrayOf(name,"男"))
}
查询数据
fun selectData(): List<Student>{
val db = this.readableDatabase
val list: MutableList<Student> = mutableListOf()
db.rawQuery("select * from $TABLE_STUDENT",null).use { cursor ->
while (cursor.moveToNext()){
list.add(Student(cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4)))
}
}
return list
}
增加数据Activity代码示例
class InsertActivity : AppCompatActivity() {
private lateinit var binding: ActivityInsertBinding
private lateinit var mySQLiteOpenHelper: MySQLiteOpenHelper
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_insert)
mySQLiteOpenHelper = MySQLiteOpenHelper(this)
}
fun save(view: View){
val name = binding.edName.text.toString()
val number = binding.edNumber.text.toString()
val score = binding.edScore.text.toString()
val gender = if(binding.rtBoy.isChecked) {
"男"
}else if(binding.rtGirl.isChecked){
"女"
}else{
"其他"
}
val student = Student(name,number,gender,score)
val rowId: Long = mySQLiteOpenHelper.insertData(student)
if (rowId != -1L){
showShort(this,"数据插入成功")
}else{
showShort(this,"数据插入失败")
}
}
}