Я не понимаю, почему этот оператор вставки не работает. Отладка работает нормально и возвращает «true». Когда я тестирую его в SQLite Studio, он тоже работает. (Идентификатор является целым числом и автоматически увеличивается.) Ошибок нет.
public bool InsertInDB(string tForm, string tLang, string tKey, string tValue)
{
SqliteCommand cmd;
cmd = conn.CreateCommand();
try
{
if (string.IsNullOrEmpty(tForm)) { throw new NullReferenceException("Missing: tForm"); }
if (string.IsNullOrEmpty(tLang)) { throw new NullReferenceException("Missing: tLang"); }
string[] temp = tLang.Split('-');
if (temp.Length != 2) { throw new Exception("The language description is wrong. Form \"xx-xx\", ex.: \"en-US\""); }
if (string.IsNullOrEmpty(tKey)) { throw new NullReferenceException("Missing: tKey"); }
if (string.IsNullOrEmpty(tValue)) { throw new NullReferenceException("Missing: tValue"); }
cmd.Parameters.AddWithValue("@tForm", tForm);
cmd.Parameters.AddWithValue("@tLang", tLang);
cmd.Parameters.AddWithValue("@tKey", tKey);
cmd.Parameters.AddWithValue("@tValue", tValue);
cmd.CommandText = "INSERT INTO Translate (Form, Lang, Key, Value) VALUES (@tForm, @tLang, @tKey, @tValue)";
if (conn.State == System.Data.ConnectionState.Closed) { conn.Open(); }
var result = cmd.ExecuteNonQuery();
return (result > 0);
}
catch (SqliteException ex)
{
HandleException(ex, "InsertInDB");
}
catch (Exception ex)
{
HandleException(ex, "InsertInDB");
}
finally
{
if (conn.State == System.Data.ConnectionState.Open) { conn.Close(); }
}
return false;
}