1.首先,确保你已经在pubspec.yaml文件中添加了sqflite插件的依赖。
dependencies:
sqflite: ^2.0.0+3
2.导包
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
3.创建一个数据库帮助类,用于管理数据库的创建和版本控制。
class DatabaseHelper {
static final DatabaseHelper _instance = DatabaseHelper.internal();
factory DatabaseHelper() => _instance;
static Database? _database;
Future<Database?> get database async {
if (_database != null) return _database;
_database = await initDatabase();
return _database;
}
DatabaseHelper.internal();
Future<Database> initDatabase() async {
String databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'alarm.db');
return await openDatabase(
path,
version: 1,
onCreate: (Database db, int version) async {
await db.execute('''
CREATE TABLE alarm (
id INTEGER PRIMARY KEY,
name TEXT,
type TEXT,
hour INTEGER,
min INTEGER
)
''');
},
);
}
}
4.创建一个Alarm模型类,用于表示数据库中的每个记录。
class Alarm {
int? id;
String? name;
String? type;
int? hour;
int? min;
Alarm({this.id, this.name, this.type, this.hour, this.min});
Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'type': type,
'hour': hour,
'min': min,
};
}
factory Alarm.fromMap(Map<String, dynamic> map) {
return Alarm(
id: map['id'],
name: map['name'],
type: map['type'],
hour: map['hour'],
min: map['min'],
);
}
}
5.在需要进行增删改查操作的地方,使用数据库帮助类进行操作。
DatabaseHelper dbHelper = DatabaseHelper();
// 插入一条记录
Future<void> insertAlarm(Alarm alarm) async {
final db = await dbHelper.database;
await db!.insert('alarm', alarm.toMap());
}
// 获取所有记录
Future<List<Alarm>> getAlarms() async {
final db = await dbHelper.database;
final List<Map<String, dynamic>> maps = await db!.query('alarm');
return List.generate(maps.length, (i) {
return Alarm.fromMap(maps[i]);
});
}
// 更新一条记录
Future<void> updateAlarm(Alarm alarm) async {
final db = await dbHelper.database;
await db!.update(
'alarm',
alarm.toMap(),
where: 'id = ?',
whereArgs: [alarm.id],
);
}
// 删除一条记录
Future<void> deleteAlarm(int id) async {
final db = await dbHelper.database;
await db!.delete(
'alarm',
where: 'id = ?',
whereArgs: [id],
);
}
6.这样,你就可以使用上述函数进行增删改查操作了。例如:
// 创建一个新的Alarm对象
Alarm newAlarm = Alarm(
name: 'Wake Up',
type: 'Daily',
hour: 7,
min: 30,
);
// 插入一条记录
await insertAlarm(newAlarm);
// 获取所有记录
List<Alarm> alarms = await getAlarms();
print(alarms);
// 更新一条记录
newAlarm.name = 'New Alarm Name';
await updateAlarm(newAlarm);
// 删除一条记录
await deleteAlarm(newAlarm.id!);