我可以在SQLite中组合SQL语句吗?

我可以在SQLite中组合SQL语句吗?,sqlite,xamarin,xamarin.forms,Sqlite,Xamarin,Xamarin.forms,我的应用程序代码如下所示: 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)");

我的应用程序代码如下所示:

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");

这三种说法可以合并为一种吗?还有一种方法,如果其中任何一个失败了,我可以回滚吗?我是否需要在陈述之后使用;如果它们可以组合或使用go或类似的东西?

sqlite在单独的事务中执行每个命令。您只需在其中运行它,然后在出现问题时回滚:

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

关于组合查询,如果您想为了回滚而组合查询,那么我的示例就可以了,您可以保持代码原样。如果没有,则只需将它们与分号组合在一个字符串中。

sqlite在单独的事务中执行每个命令。您只需在其中运行它,然后在出现问题时回滚:

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

关于组合查询,如果您想为了回滚而组合查询,那么我的示例就可以了,您可以保持代码原样。如果没有,请将它们与分号组合在一个字符串中。

您是否尝试在语句后面加分号,然后组合字符串?是否尝试在语句后面加分号,然后组合字符串?