Я пытаюсь вставить данные в файл локальной базы данных SQLITE из приложения C #. Транзакция не выдает никаких ошибок, но данные не вставляются. Тот же оператор вставки работает из анализатора запросов.
Нужно ли выполнять коммит? Есть ли метод Commit?
Свойство транзакции команды имеет значение null ..
var command = new SQLiteCommand(insert.BuildInsert(tableName,keyValuePairs),Connection);
command.ExecuteNonQuery();
UPDATE:
Я также пытался связать свою команду SQLite с транзакцией SQLite, но безуспешно.
try
{
SQLiteTransaction liteTransaction = Connection.BeginTransaction();
SQLiteCommand command = new SQLiteCommand(insert.BuildInsert(tableName, keyValuePairs), Connection);
command.Transaction = liteTransaction;
command.ExecuteNonQuery();
liteTransaction.Commit();
}
catch (SQLiteException e)
{
//error
connection.Close();
}
Метод BuildInsert просто создает строку, которая является INSERT. Вставка отлично работает в анализаторе запросов.
public string BuildInsert(string tableName, IDictionary<string, string> testDataDic)
{
stringBuilder = new StringBuilder(String.Format("INSERT INTO {0} ", tableName));
AddColumns(stringBuilder,testDataDic.Keys);
AddValues(stringBuilder, testDataDic.Values);
return stringBuilder.ToString();
}
Это пример оператора INSERT. Это прекрасно работает вне кода, но не выдает никаких ошибок:
INSERT INTO TestData (walking,running,image,yoga,exercise,meditation,hobby,somethingelse,howoften,numtechniques,userreturn,chosentechnique,chosentechnique)VALUES ("true","I will try to use deep breathing.","false","true","false","false","true","true","When I'm stressed","1","true","deepbreathing","deepbreathing"); COMMIT;