}
fun deleteAll(): Int = delete("1=1")
fun queryAll(): List<UserInfo> = query("1=1")
}
因为ManagedSQLiteOpenHelper来自于Anko库,所以记得在UserDBHelper文件头部加上下面一行导入语句:
import org.jetbrains.anko.db.ManagedSQLiteOpenHelper
另外,有别于常见的anko-common包,Anko库把跟数据库有关的部分放到了anko-sqlite包中,故而还需修改模块的build.gradle文件,在dependencies节点中补充下述的anko-sqlite包编译配置:
compile "org.jetbrains.anko:anko-sqlite:$anko_version"
现在有了用户信息表的管理类,在Activity代码中存取用户信息就方便多了,下面是往数据库存储用户信息和从数据库读取用户信息的代码片段:
var helper: UserDBHelper = UserDBHelper.getInstance(this)
//往数据库存储用户信息
btn_save.setOnClickListener {
when (true) {
et_name.text.isEmpty() -> toast("请先填写姓名")
et_age.text.isEmpty() -> toast("请先填写年龄")
et_height.text.isEmpty() -> toast("请先填写身高")
et_weight.text.isEmpty() -> toast("请先填写体重")
else -> {
val info = UserInfo(name = et_name.text.toString(),
age = et_age.text.toString().toInt(),
height = et_height.text.toString().toLong(),
weight = et_weight.text.toString().toFloat(),
married = bMarried,
update_time = DateUtil.nowDateTime)
helper.insert(info)
toast("数据已写入SQLite数据库")
}
}
}
//从数据库读取用户信息
private fun readSQLite() {
val userArray = helper.queryAll()
var desc = "数据库查询到${userArray.size}条记录,详情如下:"
for (i in userArray.indices) {
val item = userArray[i]
desc = "$desc\n第${i+1}条记录信息如下:" +
"\n 姓名为${item.name}" +
"\n 年龄为${item.age}" +
"\n 身高为${item.height}" +
"\n 体重为${item.weight}" +
"\n 婚否为${item.married}" +
"\n 更新时间为${item.update_time}"
}
if (userArray.isEmpty()) {
desc = "数据库查询到的记录为空"
}
tv_sqlite.text = desc
}