Flutterでのsqfliteの使用方法とデータベースヘルパーの作成方法


まず、sqfliteパッケージをプロジェクトに追加する必要があります。pubspec.yamlファイルに以下の依存関係を追加してください。

dependencies:
  sqflite: ^X.X.X

X.X.Xは、使用したいsqfliteパッケージのバージョン番号です。最新バージョンを使用することをおすすめします。

次に、DatabaseHelperクラスを作成します。このクラスは、データベースの作成やテーブルの作成、データの挿入や取得など、データベースの操作を行うためのメソッドを提供します。以下に、基本的なDatabaseHelperクラスの例を示します。

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
class DatabaseHelper {
  static final DatabaseHelper instance = DatabaseHelper._();
  static Database? _database;
  DatabaseHelper._();
  Future<Database> get database async {
    if (_database != null) {
      return _database!;
    }
    _database = await _initDatabase();
    return _database!;
  }
  Future<Database> _initDatabase() async {
    String databasesPath = await getDatabasesPath();
    String path = join(databasesPath, 'my_database.db');
    return await openDatabase(
      path,
      version: 1,
      onCreate: _onCreate,
    );
  }
  Future<void> _onCreate(Database db, int version) async {
    await db.execute('''
      CREATE TABLE my_table (
        id INTEGER PRIMARY KEY,
        name TEXT,
        age INTEGER
      )
    ''');
  }
// 他のデータベース操作メソッドもここに追加します
}

上記の例では、DatabaseHelperクラスはシングルトンであり、_database変数を介してデータベースにアクセスします。_initDatabaseメソッドはデータベースを初期化し、必要なテーブルを作成します。_onCreateメソッドは、データベースが作成されたときに実行される処理です。

DatabaseHelperクラスには他にも、データの挿入や取得、更新、削除などのメソッドを追加することができます。以下に、データの挿入と取得の例を示します。

class DatabaseHelper {
  // ...
  Future<int> insertData(Map<String, dynamic> data) async {
    Database db = await instance.database;
    return await db.insert('my_table', data);
  }
  Future<List<Map<String, dynamic>>> getAllData() async {
    Database db = await instance.database;
    return await db.query('my_table');
  }
// ...
}

上記の例では、insertDataメソッドはデータをmy_tableテーブルに挿入し、getAllDataメソッドはすべてのデータを取得します。

以上が、Flutterでsqfliteを使用し、DatabaseHelperクラスを作成する方法の基本的な説明です。データベース操作の他のメソッドについては、公式ドキュメントや他のチュートリアルを参考にしてください。

この記事では、Flutterでsqfliteを使ったデータベースの操作とデータベースヘルパーの作成方法について説明しました。これにより、データベースの作成、テーブルの作成、データの挿入や取得などの基本的な操作を行うことができます。さらに詳細な操作や高度な機能については、公式ドキュメントや他のリソースを参照することをおすすめします。