日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kotlin学习笔记——sqlite(anko)

發布時間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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) 這樣上面的代碼可以簡化: db.createTable(PersionTable.TABLE, true,PersionTable.ID to INTEGER + PRIMARY_KEY,PersionTable.NAME to TEXT)
?

5、parseList函數和RowParser、MapRowParser接口

RowParser、MapRowParser是接口,我們需要去實現它們。 parseList函數使用RowParser和MapParser將cursor轉換為對象集合。不同的是,RowParser是依賴列的順序,得到的是一個array;而MapRowParser是將column名作為key值,得到一個map。

6、parseOpt和parseSingle

這兩個都是在結果中返回單一對象,不同的是parseOpt可以返回null;而parseSingle則只能返回非null對象,當找不到這條數據會拋出一個錯誤。

?

總結

以上是生活随笔為你收集整理的kotlin学习笔记——sqlite(anko)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。