原生Android sqlite的使用(一) 数据库创建升级等操作 点击跳转
1, 新建一个数据库字段的bean类 DBTestBean
class DBTestBean {
var _id:Long?=null
var name: String? = null
var num:String?=null
var age:Int?=null
}
2, 新建用于测试的 TDAO类 , 在里面新增 增删改查方法, 这里增删改查是调用的Android 提供的API, 为了避免出错, 所以没有使用sql进行增删改查操作
class TDao constructor(context: Context?) {
private val dbHelper: DataBaseHelper = DataBaseHelper(context)
fun insert(dbTestBean: DBTestBean) {
val db:SQLiteDatabase = dbHelper.writableDatabase
val values:ContentValues = ContentValues()
//id就临时用当前时间戳
values.put("_id",System.currentTimeMillis())
values.put("name", dbTestBean.name)
values.put("age",dbTestBean.age)
values.put("num",dbTestBean.num)
db.insert(DBConstants.T_TABLE_NAME,null,values)
db.close()
}
fun delete(idArr:Array<String>) {
val db:SQLiteDatabase = dbHelper.writableDatabase
db.delete(DBConstants.T_TABLE_NAME,"_id=?",idArr)
db.close()
}
fun update(idArr:Array<String>,contentValues: ContentValues) {
val db:SQLiteDatabase = dbHelper.writableDatabase
db.update(DBConstants.T_TABLE_NAME,contentValues,"_id=?",idArr)
db.close()
}
fun query():List<DBTestBean> {
val db:SQLiteDatabase = dbHelper.writableDatabase
val cursor:Cursor = db.query(DBConstants.T_TABLE_NAME,null,null,null,null,null,null,null)
val dbArr:MutableList<DBTestBean> = ArrayList()
while (cursor.moveToNext()) {
val dbTestBean=DBTestBean()
dbTestBean._id = cursor.getLong(0)
dbTestBean.name = cursor.getString(1)
dbTestBean.age = cursor.getInt(2)
dbTestBean.num = cursor.getString(3)
dbArr.add(dbTestBean)
}
return dbArr
cursor.close()
db.close()
}
}
3, 对sqlite数据库 插入功能 进行测试 , 执行如下代码, 插入"张三"的信息
val dbTestBean=DBTestBean()
dbTestBean.age=12
dbTestBean.name="张三"
dbTestBean.num="LY-001"
TDao(context).insert(dbTestBean)
然后查看数据库 ,证明 插入方法正确
3, 对sqlite数据库的 查询 方法进行测试, 执行如下代码, 将查询到的信息打印到控制台
val query = TDao(context).query()
query.forEach {
Log.i(TAG,it._id.toString())
Log.i(TAG,it.name)
Log.i(TAG,it.num)
Log.i(TAG,it.age.toString())
}
运行后查看log打印出数据, 查询方法正确
4,对sqlite数据库的 修改方法进行测试,执行如下代码,将数据库中的名字改为 "漫天飞羽"
val query = TDao(context).query()
query.forEach {
val values= ContentValues()
values.put("name","漫天飞羽")
TDao(context).update(arrayOf(it._id.toString()),values)
}
运行后, 查看数据库名字已改变,证明 修改方法 正确
5, 对sqlite数据库的 删除方法进行测试, 执行如下代码, 将数据库的第一条数据删除
val query = TDao(context).query()
var count = 0
query.forEach {
if (count == 0) {
TDao(context).delete(arrayOf(it._id.toString()))
}
count++
}
运行后, 查看数据库第一条数据已被删除, 证明 删除方法正确