sqflite 1.2.0
2019年12月16日?發(fā)布???tekartik.com?
插件地址:?sqflite
支持
Flutter的?SQLite插件。支持iOS,Android 和 MacOS。
支持交易和批次
打開期間自動版本管理
插入/查詢/更新/刪除查詢的助手
在iOS和Android的后臺線程中執(zhí)行的數(shù)據(jù)庫操作
入門
在flutter項目中添加依賴項:

用法示例
引用?sqflite.dart

打開數(shù)據(jù)庫
SQLite數(shù)據(jù)庫是文件系統(tǒng)中由路徑標(biāo)識的文件。如果是相對路徑,則該路徑相對于所獲得的路徑,該路徑是getDatabasesPath()Android上的默認(rèn)數(shù)據(jù)庫目錄和iOS上的documents目錄。
var db = await openDatabase('my_db.db');
有一個基本的遷移機制可以處理打開期間的模式更改。
許多應(yīng)用程序使用一個數(shù)據(jù)庫,并且永遠(yuǎn)不需要關(guān)閉它(當(dāng)應(yīng)用程序終止時,它將關(guān)閉)。如果要釋放資源,可以關(guān)閉數(shù)據(jù)庫。
await db.close();
原始SQL查詢
演示代碼執(zhí)行原始SQL查詢


SQL助手
使用助手的示例



讀取結(jié)果
假設(shè)有以下讀取結(jié)果:

生成的地圖項為只讀

如果要在內(nèi)存中進(jìn)行修改,則需要創(chuàng)建一個新地圖:

不使用數(shù)據(jù)庫,而僅在事務(wù)中使用Transaction對象訪問數(shù)據(jù)庫

如果回調(diào)未引發(fā)錯誤,則提交事務(wù)。如果拋出錯誤,則交易被取消。因此,回滾事務(wù)的一種方法是引發(fā)異常。
為了避免在Dart和本機代碼之間進(jìn)行乒乓球,可以使用Batch:

獲得每個操作的結(jié)果是有成本的(插入的ID以及更新和刪除的更改數(shù)),尤其是在執(zhí)行額外SQL請求的Android上。如果您不關(guān)心結(jié)果而擔(dān)心大批量的性能,則可以使用

注意,在事務(wù)處理期間,直到事務(wù)提交后,才會提交批處理

默認(rèn)情況下,批處理在遇到錯誤后立即停止(通常會還原未提交的更改)。您可以忽略錯誤,以便即使一個操作失敗也可以運行并落實每個成功的操作:

表和列名
通常,最好避免對實體名稱使用SQLite關(guān)鍵字。如果使用以下任何名稱:
"add","all","alter","and","as","autoincrement","between","case","check","collate","commit","constraint","create","default","deferrable","delete","distinct","drop","else","escape","except","exists","foreign","from","group","having","if","in","index","insert","intersect","into","is","isnull","join","limit","not","notnull","null","on","or","order","primary","references","select","set","table","then","to","transaction","union","unique","update","using","values","when","where"
助手將逃避這個名字,即

將等同于在表名周圍手動添加雙引號(此處令人困惑,名為table)

然而,在任何其他原料陳述(包括orderBy,where,groupBy),確保正確轉(zhuǎn)義名稱中使用雙引號。例如,請參見下面的內(nèi)容,其中的列名group未在columns參數(shù)中轉(zhuǎn)義,但在where參數(shù)中轉(zhuǎn)義。
