目次
パッケージのインストール
dependencies:
sqflite: ^2.0.1
参考
sqflitepub.dev
DBファイルを作成する
var dbName = 'example.db';
var databasesPath = await getDatabasesPath();
var path = databasesPath + dbName;
try {
// DBファイルの作成
await Directory(path).create(recursive: true);
} catch (_) {}
テーブルの作成 CREATE
openDatabe
でデータを開くときに、
初期化としてonCreate
を設定することができます。
そこでテーブルの作成を行います。
_onCreate(Database db, int version) async {
// データベースが作成されたら、テーブルを作成する
await db.execute("CREATE TABLE Test (id INTEGER PRIMARY KEY, value TEXT)");
}
// データベースを開き、バージョンとonCreateコールバックを指定します。
var db = await openDatabase(path, version: 1, onCreate: _onCreate);
SQLをツールで作る
SQLあんま覚えてないので、これで作ってます。
【SQLliteツール】DB Browser for SQLiteでDBファイルを作る方法
追加 INSERT
テーブルを指定してインサートができます。
db.insert('Test', {
'value': 'いんさーと',
});
取得 SELECT
これは、全部取得する例です。
List<Map<String, Object?>> res = await db.query('Test');
// [{'value': 'せれくと'}]
条件などを指定する
int id = 3;
List<Map<String, Object?>> maps = await db.query('Test',
columns: ['id', 'value'], // 取得するカラム
where: 'id = ?', // idで検索 ? がwhereArgs置換されるる
whereArgs: [id],
orderBy: 'id DESC',
limit: 5);
"IN"を使ってで取得する
List<Map<String, Object?>> maps = await db.query('Test',
where: 'id IN (${ids.join(',')})',
);
whereArgsに指定してもできなかった。
更新 UPDATE
int id = 3;
await db.update(
'Test',
{
'value': 'あっぷでーと',
},
where: "id = ?",
whereArgs: [id],
);
削除 DELETE
int id = 3;
await db.delete(
'Test',
where: "id = ?",
whereArgs: [id],
);
Flutter開発で知らないと損すること