2016-11-16 48 views
0

我的应用程序代码如下所示:我可以在SQLite中组合SQL语句吗?

using SQLite; 
using System.Collections.Generic; 
using System.Linq; 
using Xamarin.Forms; 
using System.Diagnostics; 

... 
... 

    db2.Execute("DELETE FROM Phrase" + 
       " WHERE PhraseId NOT IN(SELECT Id FROM PhraseSource)"); 
    db2.Execute("DELETE FROM Phrase" + 
       " WHERE Modified < (SELECT Modified FROM PhraseSource WHERE Id = Phrase.PhraseId)"); 
    db2.Execute("INSERT OR IGNORE INTO Phrase(CategoryId, PhraseId, English, Romaji, Kana, Kanji, Modified)" + 
       " SELECT PS.CategoryId, PS.ID, PS.English, PS.Romaji, PS.Kana, PS.Kanji, PS.Modified" + 
       " FROM PhraseSource AS PS"); 

难道这三个语句被合并成一个?如果其中任何一个失败,我是否还有一种方法可以回滚?我是否需要按照“;”如果他们可以合并或使用“去”或类似的东西?

+0

您是否尝试用分号跟随语句,然后组合字符串? –

回答

2

sqlite在单独的事务中执行每个命令。你只需要在一个运行它,然后回滚,如果出现错误:

try 
{ 
    db2.BeginTransaction(); 
    //executions go here 
    db2.Commit(); 
} 
catch (Exception ex) 
{ 
    db2.Rollback(); 
} 

关于合并查询,如果你想将它们合并为回滚目的,那么我的例子会做得很好,你可以留下您的代码它是。如果没有,那么只需在一个字符串中用分号结合它们。

相关问题