0
私は助けてください:私は2つのメソッドを持っています:データを挿入するには1つ、データを更新するには私のコードでは、まず "insert method"を呼び出し、 2番目のケースでは、 "ロックデータベースエラー"を受信します。ここでC# - Sqlite - エラーロックデータベース
方法:
private bool mappingFileInDB(string numRep, string siglaNot, string annoPrat, string ErrorImporting, string fishedOut)
{
using (SQLiteConnection sqlite_conn = new SQLiteConnection("Data Source=" + pathProjectDir + @"\db\db.dat;"))
{
sqlite_conn.Open();
using (SQLiteCommand insertSQL = new SQLiteCommand("INSERT INTO working_table (numero_repertorio, sigla_notaio, codice_pratica, anno_cartella, is_file_imported, if_error_importing, is_file_glyphed, is_cc_in_outFolder, is_td_in_toSignFolder, is_td_signed, is_td_in_signedFolder, is_td_in_notaroFolder, is_fishedOut) VALUES (@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13)", sqlite_conn))
{
insertSQL.Parameters.Add(new SQLiteParameter("@1", numRep));
insertSQL.Parameters.Add(new SQLiteParameter("@2", siglaNot));
insertSQL.Parameters.Add(new SQLiteParameter("@3", ""));
insertSQL.Parameters.Add(new SQLiteParameter("@4", annoPrat));
insertSQL.Parameters.Add(new SQLiteParameter("@5", "0"));
insertSQL.Parameters.Add(new SQLiteParameter("@6", ErrorImporting));
insertSQL.Parameters.Add(new SQLiteParameter("@7", "0"));
insertSQL.Parameters.Add(new SQLiteParameter("@8", "0"));
insertSQL.Parameters.Add(new SQLiteParameter("@9", "0"));
insertSQL.Parameters.Add(new SQLiteParameter("@10", "0"));
insertSQL.Parameters.Add(new SQLiteParameter("@11", "0"));
insertSQL.Parameters.Add(new SQLiteParameter("@12", "0"));
insertSQL.Parameters.Add(new SQLiteParameter("@13", fishedOut));
try
{
insertSQL.ExecuteNonQuery();
}
catch (Exception ex)
{
return false;
}
finally
{
sqlite_conn.Close();
sqlite_conn.Dispose();
}
}
}
GC.Collect();
return true;
}
public bool updateFileInDB(string nameColumn, string newVal, string numRep, string siglaNot)
{
using (SQLiteConnection sqlite_conn = new SQLiteConnection("Data Source=" + pathProjectDir + @"\db\db.dat;"))
{
sqlite_conn.Open();
using (SQLiteCommand updateSQL = new SQLiteCommand("UPDATE working_table SET " + nameColumn + " = @val WHERE numero_repertorio = @nR AND sigla_notaio = @sN", sqlite_conn))
{
updateSQL.Parameters.Add(new SQLiteParameter("@val", newVal));
updateSQL.Parameters.Add(new SQLiteParameter("@nR", numRep));
updateSQL.Parameters.Add(new SQLiteParameter("@sN", siglaNot));
try
{
updateSQL.ExecuteNonQuery();
}
catch (Exception ex)
{
return false;
}
finally
{
sqlite_conn.Close();
sqlite_conn.Dispose();
}
}
}
GC.Collect();
return true;
}
ここでエラー:
PS:私はそれが正常に動作する複数回の挿入方法を求める場合。前に何かを挿入せずにupdateメソッドだけを呼び出すと動作します。それは私が最初に挿入メソッドを呼び出し、2回目に更新メソッドを呼び出すだけで動作しません。
どこに問題があるのかわかりません!