見出し画像

sqfliteの使い方 FlutterでRDBMSを扱う

今回はsqfliteについて解説していきます。


sqfliteとは

sqfliteはFlutterアプリケーションで使えるSQLiteデータベースプラグインです。

sqfliteを使うことでFlutterアプリ内にローカルデータベースを作成し、データの保存や取得、更新、削除などを行うことが可能です。主にモバイルアプリ内でのユーザー設定の保存や、オフラインでのデータ保持などに活用されます。

sqfliteの特徴

ローカルデータベースのサポート

スマートフォン内にSQLベースのデータベースを作成し、構造化されたデータを永続的に保存できます。

基本的なCRUD機能

データの作成(Create)、読み取り(Read)、更新(Update)、削除(Delete)といった基本操作をサポートしており、データベース操作が簡単に行えます。

シンプルな操作

Flutterコード内で直接SQLコマンドを使用する形でデータ操作が可能です。シンプルなAPIを提供しているため、学習コストが比較的低いのが特徴です。


SQLiteとは

SQLiteは軽量で組み込み型のリレーショナルデータベース管理システム(RDBMS)です。

サーバーレスで動作し、データベースファイルをアプリケーションに直接組み込む形で使えるため、他のデータベースシステムに比べてインストールや設定が不要で簡単に利用できます。


sqfliteの使い方

sqfliteの導入

pubspec.yamlファイルにsqfliteとpathパッケージを追加します。

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.0.0+3
  path: ^1.8.0

ターミナルでパッケージをインストールします。

flutter pub get


データベースの初期化とテーブルの作成

データベースを開き、ユーザー情報などを格納するテーブルを作成するコードを用意します。

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';

Future<Database> initializeDatabase() async {
  final dbPath = await getDatabasesPath();
  final path = join(dbPath, 'app_database.db');

  return openDatabase(
    path,
    onCreate: (db, version) async {
      await db.execute(
        "CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
      );
    },
    version: 1,
  );
}


データの挿入

insertUser関数を使って、ユーザー情報をデータベースに挿入します。

Future<void> insertUser(Database db, Map<String, dynamic> user) async {
  await db.insert(
    'users',
    user,
    conflictAlgorithm: ConflictAlgorithm.replace,
  );
}

// 使用例
final db = await initializeDatabase();
await insertUser(db, {'name': 'John', 'age': 25});


データの取得

getUsers関数を作成し、usersテーブルからすべてのデータを取得します。

Future<List<Map<String, dynamic>>> getUsers(Database db) async {
  return await db.query('users');
}

// 使用例
final users = await getUsers(db);
print(users); // 結果を確認


データの更新

updateUser関数を使い、指定したidのユーザー情報を更新します。

Future<void> updateUser(Database db, Map<String, dynamic> user) async {
  await db.update(
    'users',
    user,
    where: "id = ?",
    whereArgs: [user['id']],
  );
}

// 使用例
await updateUser(db, {'id': 1, 'name': 'Jane', 'age': 30});


データの削除

deleteUser関数で、指定したidのユーザーを削除します。

Future<void> deleteUser(Database db, int id) async {
  await db.delete(
    'users',
    where: "id = ?",
    whereArgs: [id],
  );
}

// 使用例
await deleteUser(db, 1);

これでsqfliteを使ってFlutterアプリ内で簡単にローカルデータベースを操作できるようになります。


Flutterをもっと詳しくなりたい方に

ゼロから学ぶFlutterアプリ開発


Flutter実践開発 ── iPhone/Android両対応アプリ開発のテクニック


Flutterアプリ開発講座(中級編)


SQLをもっと詳しくなりたい方に

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ


SQL 第2版: ゼロからはじめるデータベース操作


【22日間で学ぶ】SQL文、分析関数、テーブル設計、SQLチューニングまでMySQLで覚えるSQL実践講座

※本ページではアフィリエイトリンク(PR)が含まれています


いいなと思ったら応援しよう!

この記事が参加している募集