FlutterでSQLiteを使う方法

パッケージのインストール

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ファイルを作る方法 【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開発で知らないと損すること Flutter開発で知らないと損すること

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です