2010-10-10 21 views
1

J'ai une liste d'éléments que je veux insérer dans la base de données mais je ne veux pas de doublons. Donc, je supprime tous les éléments et réinsérer tout. Ce n'est pas le moyen le plus efficace, mais ce n'est pas beaucoup d'éléments donc ça marche pour moi. Mais j'ai une erreur de syntaxe près de "Insert". Je fais ce qui suit:Sqlite Transaction, erreur de syntaxe. Insérer et supprimer dans la même transaction

DELETE FROM Settings WHERE Type = 'Extensions' 
INSERT INTO Settings (Value, Type) Values ('img', 'Extensions') 
INSERT INTO Settings (Value, Type) Values ('avi', 'Extensions') 
INSERT INTO Settings (Value, Type) Values ('mpg', 'Extensions') 
INSERT INTO Settings (Value, Type) Values ('mkv', 'Extensions') 
INSERT INTO Settings (Value, Type) Values ('mov', 'Extensions') 
INSERT INTO Settings (Value, Type) Values ('iso', 'Extensions') 

et l'exécuter avec ceci:

protected bool ExecuteCommand(string command, bool rollbackOnError) 
{ 
    using (SQLiteTransaction transaction = DbConnection.BeginTransaction()) 
    { 
     try 
     { 

      using (SQLiteCommand mycommand = new SQLiteCommand(DbConnection)) 
      { 
       mycommand.CommandText = command; 
       mycommand.ExecuteNonQuery(); 
       transaction.Commit(); 
      } 
     } 
     catch 
     { 
      if (rollbackOnError) 
      { 
       transaction.Rollback(); 
      } 
      return false; 
     } 
    } 
    return true; 
} 

Répondre

2

Vous devez séparer vos commandes avec un point-virgule, ne pas vous?

Aussi je ne suis pas sûr si la commande est capable d'exécuter plusieurs instructions.

+0

Merci, je ne peux pas croire que j'ai raté ça. Il peut exécuter plusieurs instructions si –

+0

Bien sûr, il ne peut tout simplement pas accepter GO. Je me souviens d'avoir un problème avec SQL Server ne pas être en mesure d'exécuter plusieurs déclarations, mais peut-être tort ... âges depuis touché des données de base sans ORM. – Aliostad