Является ли этот код прочным? Я попытался использовать «использование» и т. Д. В принципе, метод для передачи в виде упорядоченного списка SQL-команд для работы с базой данных Sqlite.sqlite - любые улучшения для этого прилагаемого кода (выполняется несколько транзакций sql транзакций в sqlite)
Я предполагаю, что верно, что в sqlite по умолчанию все команды, запущенные в одном соединении, обрабатываются транзакционно? Это правда? т. е. мне не нужно (и не иметь в коде в настоящий момент) BeginTransaction или CommitTransaction.
В качестве базы данных поставщика базы данных ADO.net используется http://sqlite.phxsoftware.com/.
первый TRY
private int ExecuteNonQueryTransactionally(List<string> sqlList)
{
int totalRowsUpdated = 0;
using (var conn = new SQLiteConnection(_connectionString))
{
// Open connection (one connection so should be transactional - confirm)
conn.Open();
// Apply each SQL statement passed in to sqlList
foreach (string s in sqlList)
{
using (var cmd = new SQLiteCommand(conn))
{
cmd.CommandText = s;
totalRowsUpdated = totalRowsUpdated + cmd.ExecuteNonQuery();
}
}
}
return totalRowsUpdated;
}
третьего TRY
Как это?
private int ExecuteNonQueryTransactionally(List<string> sqlList)
{
int totalRowsUpdated = 0;
using (var conn = new SQLiteConnection(_connectionString))
{
conn.Open();
using (var trans = conn.BeginTransaction())
{
try
{
// Apply each SQL statement passed in to sqlList
foreach (string s in sqlList)
{
using (var cmd = new SQLiteCommand(conn))
{
cmd.CommandText = s;
totalRowsUpdated = totalRowsUpdated + cmd.ExecuteNonQuery();
}
}
trans.Commit();
}
catch (SQLiteException ex)
{
trans.Rollback();
throw;
}
}
}
return totalRowsUpdated;
}
благодаря
. Из интереса для последующих читателей выполняется проверка времени с транзакцией и без нее, используйте «System.Diagnostics.Stopwatch» (http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch .aspx) не 'DateTime' и т. д. Опубликуйте результаты с вопросом для справки ... PK :-) –
О, так вы говорите, что мой код не будет обрабатываться транзакционно? – Greg
@Greg: Если вы не укажете транзакцию, каждый запрос станет одной транзакцией. – MPelletier