面试题答案
一键面试-
添加依赖: 在
pubspec.yaml
文件中添加sqflite
依赖:dependencies: sqflite: ^2.2.3
然后运行
flutter pub get
获取依赖。这一步是为了在项目中引入SQLite操作的插件,使得我们可以使用其提供的API来操作SQLite数据库。 -
创建数据库:
import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; Future<Database> createDatabase() async { final databasesPath = await getDatabasesPath(); final path = join(databasesPath, 'example.db'); return await 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
打开或创建数据库。如果数据库不存在,会创建数据库并执行onCreate
回调。在onCreate
回调中,通过db.execute
执行SQL语句来创建Users
表,表中有id
(自增主键)、name
(文本类型)和age
(整型)字段。
-
插入数据:
Future<void> insertData(Database db) async { await db.insert( 'Users', { 'name': 'John', 'age': 30 }, conflictAlgorithm: ConflictAlgorithm.replace, ); }
db.insert
方法用于向Users
表中插入数据。第一个参数是表名,第二个参数是一个Map
,包含要插入的列名和对应的值。conflictAlgorithm
指定了在插入数据时,如果发生冲突(例如主键冲突)的处理方式,这里ConflictAlgorithm.replace
表示替换已有的数据。
-
完整使用示例:
void main() async { final db = await createDatabase(); await insertData(db); await db.close(); }
- 首先调用
createDatabase
创建数据库和表。 - 然后调用
insertData
插入数据。 - 最后调用
db.close
关闭数据库连接,释放资源。
- 首先调用