0
Когда я обновляю некоторые данные, иногда он выдает исключение: Database is locked
. Код ниже:Как решить SQLite «База данных заблокирована» в C#?
public int DisableSalesBySalesID(string SalesID)
{
int count = 0;
try
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
conn.Open();
string sql = @"update SalesMaster set Disabled = '1' where [email protected]";
using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
{
cmd.Parameters.Add(new SQLiteParameter("@SalesID", SalesID));
count = cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
}
return count;
}
И это зависит от SalesID
. Некоторые SalesID
будут в порядке, но остальные сделают исключение. Зачем?
Предположительно, у другого запроса есть блокировка для этого SalesID в момент запуска обновления. Эта ошибка специально означает, что это ваш собственный процесс, а не другой процесс, создающий блокировку. У вас еще есть SELECT, когда вы вызываете этот код? –
http://stackoverflow.com/questions/17592671/sqlite-database-locked-exception?rq=1 –
Вы можете применить весь мощный хакерский подход к вашему запросу, 'WITH (NOLOCK)' или '(nolock)'. Кроме того, что будет применяться почти ко всем вашим запросам SELECT. – Greg