面试题答案
一键面试-
添加依赖: 在
pubspec.yaml
文件中添加sqflite
依赖:dependencies: sqflite: ^2.2.0
然后运行
flutter pub get
。 -
创建数据库和表:
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
(整型)字段。
-
插入数据:
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
表示如果有冲突则替换原有数据。
- 先获取数据库实例