2017-10-30 2 views
0

도움이 필요하십니까 : 제 데이터를 삽입하고 데이터를 업데이트하기위한 두 가지 방법이 있습니다. 코드에서 "insert method"를 호출하고 두 번째로 호출합니다 "업데이트 방법"하지만 두 번째 경우에는 "데이터베이스 잠금 오류"가 나타납니다. 여기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; 
    } 

오류 :

Error screenshot

PS : 내가 번 이상 제대로 작동 삽입 방법을 요구하는 경우; 이전에 무언가를 삽입하지 않고 update 메소드 만 호출하면 작동합니다. 첫 번째 삽입 메서드를 호출하고 두 번째로 업데이트 메서드를 호출하는 경우에만 작동하지 않습니다.

어디서 문제인지 이해할 수 없습니다.

답변

0

이제 작동합니다! 이와

insertSQL.ExecuteNonQuery(); 

: :이 변경

insertSQL.ExecuteScalar(); 

을하고 잘 작동!

아무도 말해 줄 수 없습니까?

관련 문제