2010-10-10 56 views
1

我有一個要插入數據庫的項目列表,但我不想有任何重複。所以我刪除所有項目並重新插入所有項目。這不是最有效的方式,但它不是很多項目,所以它適用於我。但是在「插入」附近出現語法錯誤。我做到以下幾點:Sqlite事務,語法錯誤。在同一個事務中插入和刪除

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') 

並執行與此:

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; 
} 

回答

2

你需要你的命令用分號分隔,不是嗎?

另外我不確定命令是否能夠運行多個語句。

+0

謝謝,不敢相信我錯過了。它可以運行多個語句,雖然 – 2010-10-11 18:59:38

+0

當然,它不能接受GO。我記得有一個SQL Server的問題不能執行多個語句,但可能是錯誤的...因爲觸摸數據庫的東西沒有ORM年齡。 – Aliostad 2010-10-11 19:06:22

相關問題