kotlin学习笔记——sqlite(anko)

前端之家收集整理的这篇文章主要介绍了kotlin学习笔记——sqlite(anko)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


Anko提供了很多强大的sqliteOpenHelper来可以大量简化代码,首先需要依赖anko的sqlite模块:
compile "org.jetbrains.anko:anko-sqlite:$anko_version"

1、ManagedsqliteOpenHelper

ManagedsqliteOpenHelper是一个抽象类。
我们使用一般的sqlteOpenHelper时,我们需要调getReadableDatabase或getWritableDatabase,然后调用处理数据的方法,最后必须调用close。使用ManagedsqliteOpenHelper只需要
dbHelper.use{
     ...
}
即可。use函数的源代码如下:
public fun <T> use(f: sqliteDatabase.() -> T): T {
    try {
     return openDatabase().f()
 } finally {
     closeDatabase()
    }
}
首先use接收一个sqliteDatavase的扩展函数,所以可以使用this在大括号中并处于sqliteDatavase对象中。这个扩展函数可以返回一个值。
由于使用try-finally,所以一定会去关闭数据库


2、创建表

我们可以用object来提前定义表,如:
object PersionTable{
     val TABLE = "Persion"
     val ID = "_id"
     val NAME = "name"
}
使用createTable来创建表
fun sqliteDatabase.createTable(tableName: String,ifNotExists: Boolean = false,vararg columns: Pair<String,sqlType>)
第一个参数是表名
第二个参数为true时,创建前会检查表是否存在
后面的参数是Pair类型的vararg,是表的列名和类型。(vararg在java中也有,是一种在函数中传入很多相同类型的参数)
所以实现代码如下:
db.createTable(PersionTable.TABLE,true,Pair(PersionTable.ID,INTEGER + PRIMARY_KEY),Pair(PersionTable.NAME,TEXT))


3、sqlType和sqlTypeModifier

Anko中有一个特殊类型sqlType,可以和sqlTypeModifier混合,如上面的PRIMARY_KEY。sqlType中“+”操作符被重写了,如下:
fun sqlType.plus(m: sqlTypeModifier) : sqlType {
    return sqlTypeImpl(name,if (modifier == null) m.toString()
            else "$modifier $m")
}
会返回新的sqlType,这样使用“+”操作符可以将多个装饰符组合起来。


4、to函数

kotlin标准库中含有一个to函数,如下:
public fun <A,B> A.to(that: B): Pair<A,B> = Pair(this,that)
这样上面的代码可以简化:
函数和RowParser、MapRowParser接口
RowParser、MapRowParser是接口,我们需要去实现它们。
parseList函数使用RowParser和MapParser将cursor转换为对象集合。不同的是,RowParser是依赖列的顺序,得到的是一个array;而MapRowParser是将column名作为key值,得到一个map。

6、parSEOpt和parseSingle

这两个都是在结果中返回单一对象,不同的是parSEOpt可以返回null;而parseSingle则只能返回非null对象,当找不到这条数据会抛出一个错误

猜你在找的Sqlite相关文章