Far*_*ana 2 android dart flutter sqflite
如果存在,我想在填充服务器数据之前删除表。
我正在尝试的查询
deleteOptionTable() async {
final db = await database;
db.rawDelete("Delete * from option");
}
dropTable() async {
final db = await database;
db.query('SELECT * FROM cloudnet360.db WHERE name =option and type=table');
}
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情,但没有发生任何事情。
void _insertOption(OptionsGroupList option) async {
int idd = dbHelper.dropTable();
print('DROP TABLE: $idd');
PreferencesConnector myprefs= PreferencesConnector();
String merchantid=await myprefs.readString('merchantid');
String hashkey=await myprefs.readString('hashkey');
Map<String, dynamic> row = {
DatabaseHelper.columnGroupId:option.grouprowid ,
DatabaseHelper.columnGroupName: option.groupname,
DatabaseHelper.columnIsRequired:option.isrequired ,
DatabaseHelper.columnMerchantId: merchantid,
DatabaseHelper.columnMerchantHashKey: hashkey,
};
int id = await dbHelper.insertOption(row);
print('inserted option row id: $id');
}
Run Code Online (Sandbox Code Playgroud)
事实上,您的 dropTable 方法似乎实际上并未删除任何表:
要删除(删除)表:
DROP TABLE IF EXISTS my_table
Run Code Online (Sandbox Code Playgroud)
清除表格内容:
DELETE FROM my_table
Run Code Online (Sandbox Code Playgroud)
正如问题中所问的那样,我们需要一种方法来删除表(如果存在)并在颤振中重新创建它并使用 sqflite 包...
Future<void> DropTableIfExistsThenReCreate() async {
//here we get the Database object by calling the openDatabase method
//which receives the path and onCreate function and all the good stuff
Database db = await openDatabase(path,onCreate: ...);
//here we execute a query to drop the table if exists which is called "tableName"
//and could be given as method's input parameter too
await db.execute("DROP TABLE IF EXISTS tableName");
//and finally here we recreate our beloved "tableName" again which needs
//some columns initialization
await db.execute("CREATE TABLE tableName (id INTEGER, name TEXT)");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10448 次 |
| 最近记录: |