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