I am using code below to enter data into sqllite database if it does not exist in it. Also, if availalbe, retrieving information on where it is stored. I used "break" to get out once data is found and perform the same action with new value of bItems. However, it is giving me error of System.Data.SQLite.SQLiteException: 'database is locked database is locked' @ code line cmd1.ExecuteNonQuery();. My understanding is I am getting it somehow due to "break". Can someone explain how can I fix this error. Thanks
{ for (int p = 0; p < 256; p++) { bItems += "P" + buffer[p]; } using (SQLiteConnection con = new SQLiteConnection(databaseObject.myConnection)) { con.Open(); SQLiteCommand cmd = new SQLiteCommand("select ID, Data from B where Data like 'P%'", con); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { if (Convert.ToString(rdr["Data"]) != bItems) { SQLiteCommand cmd1 = new SQLiteCommand("INSERT INTO B ('Data') SELECT @Data WHERE NOT EXISTS (SELECT ID, Data FROM B WHERE Data = @Data)", con); cmd1.Parameters.AddWithValue("@Data", bItems); cmd1.ExecuteNonQuery(); // GETTING ERROR HERE } else { sItems = "B" + Convert.ToString(rdr["ID"]); con.Close(); break; } } } bItems = ""; Console.WriteLine(sItems); }