Je souhaite supprimer la table avant de la remplir avec les données du serveur, le cas échéant.
les requêtes que j'essaye
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'); }
J'ai essayé quelque chose comme ça mais rien ne se passe.
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'); }
3 Réponses :
En effet, votre méthode dropTable ne semble pas supprimer de table:
Pour supprimer (supprimer) une table:
DELETE FROM my_table
Pour effacer le contenu d'un tableau:
DROP TABLE IF EXISTS my_table
Comme demandé dans la question, nous avons besoin d'une méthode pour supprimer une table si elle existe et la recréer en flutter et en utilisant le package 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)"); }
Bien que ce code puisse résoudre la question, inclure une explication sur comment et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre publication et entraînerait probablement plus de votes à la hausse. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement à la personne qui la pose maintenant. Veuillez modifier votre réponse pour ajouter des explications et donner une indication des limites et des hypothèses applicables. De l'avis
C'est peut-être trop tard, mais si cela aide quelqu'un. Pour supprimer toutes les lignes de la table, utilisez
final db = await database; db.delete("tableName");
Étrange, mais si vous attendez le résultat de la méthode de suppression, cela ne fonctionne pas.
Je ne comprends pas le flutter mais ... l'instruction select dans dropTable () supprimera la table ??
@AIMINPAN Je n'arrive pas à supprimer la table.
avez-vous essayé
int idd = await dbHelper.dropTable();
? Je suppose que c'est asynchrone