Kotlin学习笔记系列:http://blog.csdn.net/column/details/16696.html
compile "org.jetbrains.anko:anko-sqlite:$anko_version"
1、ManagedsqliteOpenHelper
ManagedsqliteOpenHelper是一个抽象类。
我们使用一般的sqlteOpenHelper时,我们需要调getReadableDatabase或getWritableDatabase,然后调用处理数据的方法,最后必须调用close。使用ManagedsqliteOpenHelper只需要
public fun <T> use(f: sqliteDatabase.() -> T): T { try { return openDatabase().f() } finally { closeDatabase() } }首先use接收一个sqliteDatavase的扩展函数,所以可以使用this在大括号中并处于sqliteDatavase对象中。这个扩展函数可以返回一个值。
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
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)这样上面的代码可以简化: