flutter使用sqflite插件进行增删改查

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!);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值