public static void SetStatus(Status statusObject,int retryCount)
{
if (statusObject != null)
{
using (SqliteConnection dbConn = new SqliteConnection(dbURL))
{
IDbTransaction dbTransaction = null;
try
{
dbConn.Open();
dbTransaction = dbConn.BeginTransaction();
new SqliteCommand(some_query, dbConn).ExecuteNonQuery();
}
catch (Exception e)
{
dbTransaction.Rollback();
dbConn.Close();
if (retryCount > 0)
{
SetStatus(statusObject, --retryCount);
return;
}
else
throw e;
}
finally
{
try { dbTransaction.Commit(); }
catch (Exception e)
{
}
}
}
}
}
「最終的には」不適切myself.Soクエリが最初に失敗した場合に使用してめちゃくちゃに二回(再試行中)接続はsqlliteデータベースのトランザクションのコミットを有効かつオープンでなければならないのExecuteNonQueryが原因私は中にそのような場合again.In同じクエリを実行する再試行メカニズムを持っているいくつかの例外が原因で失敗したときはいつでも
「接続がトランザクションをコミットするために有効で、開いていなければなりません」comes-次の例外
最後に、コミット後にdb接続を閉じます。 –