MST

星途 面试题库

面试题:Flutter中SQLite数据库的基本操作

在Flutter应用中,若要使用SQLite进行离线数据存储,简述如何创建一个新的数据库表,并插入一条数据。请给出关键代码片段及解释。
45.0万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试
  1. 添加依赖: 在pubspec.yaml文件中添加sqflite依赖:

    dependencies:
      sqflite: ^2.2.0
    

    然后运行flutter pub get

  2. 创建数据库和表

    import 'package:sqflite/sqflite.dart';
    import 'package:path/path.dart';
    
    Future<Database> databaseFactory() async {
      final databasesPath = await getDatabasesPath();
      final path = join(databasesPath, 'example.db');
    
      return openDatabase(
        path,
        version: 1,
        onCreate: (Database db, int version) async {
          // 创建表
          await db.execute('''
            CREATE TABLE users (
              id INTEGER PRIMARY KEY AUTOINCREMENT,
              name TEXT,
              age INTEGER
            )
          ''');
        },
      );
    }
    

    解释:

    • getDatabasesPath获取应用存储数据库的路径。
    • join函数将数据库文件名与路径连接起来。
    • openDatabase打开数据库,如果数据库不存在则创建。version指定数据库版本,onCreate回调在数据库首次创建时触发,在其中使用db.execute执行SQL语句创建users表,表中有id(自增主键)、name(文本类型)和age(整型)字段。
  3. 插入数据

    Future<void> insertUser() async {
      final db = await databaseFactory();
      // 插入数据
      await db.insert(
        'users',
        {'name': 'John', 'age': 30},
        conflictAlgorithm: ConflictAlgorithm.replace,
      );
    }
    

    解释:

    • 先获取数据库实例db
    • db.insert方法向users表中插入一条数据,第一个参数是表名,第二个参数是要插入的数据以Map形式表示,conflictAlgorithm指定冲突解决策略,这里ConflictAlgorithm.replace表示如果有冲突则替换原有数据。