我有一个 Flutter 应用程序,我想与 SQLite 数据库进行交互。我已经构建了要在数据库中与之交互的表并拥有其详细信息。
class SafeTable extends GenericTable {
@override
String tableName = "safe";
@override
List<List<String>> fields = [
['id', TableHelper.integerPrimaryKey],
['timestamp', TableHelper.varchar255],
['user_id', TableHelper.varchar255],
['situation', TableHelper.textDefaultEmpty],
['is_safe', TableHelper.booleanNotNullDefaultZero]
];
}
class EmergenciesTable extends GenericTable {
@override
String tableName = "emergencies";
@override
List<List<String>> fields = [
['id', TableHelper.integerPrimaryKey],
['timestamp', TableHelper.varchar255],
['notice', TableHelper.varchar255],
['instructions', TableHelper.textDefaultEmpty],
['is_emergency', TableHelper.booleanNotNullDefaultZero]
];
}
这就是表的结构方式,我想执行 CRUD 函数以从
emergencies
表中读取数据,并在 safe
表中创建和更新。我查看了 CRUD 的图例,但它们适用于不同结构的数据库。我需要使用这个结构,所以我正在寻找可以使用这个结构的 CRUD。
如果结构与项目中的数据流没有严格关联,我建议更改结构
static Future<void> createTables(sql.Database database) async {
database.execute('''
CREATE TABLE $tableName (
"$columnId" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"$columnData1" TEXT NOT NULL,
"$columnData2" TEXT NOT NULL,
"$columnData3" TEXT NOT NULL
)
''');
debugPrint("success!!! DB Created");
}
static Future<sql.Database> db() async {
print("Measurements Database path: ${await sql.getDatabasesPath()}");
return sql.openDatabase(
'$tableName',
version: _dbVersion,
onCreate: (sql.Database database, int version) async {
print("------- creating a table -------");
await createTables(database);
},
);
}