如何解决SQLite“数据库被锁”的问题在c#

本文关键字:数据库被锁 问题 数据库 何解决 解决 SQLite | 更新日期: 2023-09-27 18:17:22

当我更新一些数据时,有时会抛出一个异常:Database is locked。以下代码:

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 SalesID=@SalesID";
            using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
            {
                cmd.Parameters.Add(new SQLiteParameter("@SalesID", SalesID));
                count = cmd.ExecuteNonQuery();
            }
        }
    }
    catch (Exception ex)
    {
    }
    return count;
}

并且,它取决于SalesID。一些SalesID将是OK的,但其他的将是例外。为什么?

如何解决SQLite“数据库被锁”的问题在c#

一个常见的原因是您有一个悬空的sqlcommand。sqlcommand持有数据库上的锁。sqlreaders也一样。确保它们都在using block