我正在从SQLite获取数据库锁定异常仅用于某些查询.
下面是我的代码:当我执行任何select语句时,它工作正常.
当我在JobsTable 上执行任何写语句时,它也可以正常工作.
这很好用:
ExecuteNonQuery("DELETE FROM Jobs WHERE id=1");
Run Code Online (Sandbox Code Playgroud)
但是,如果我正在执行对Employees表的查询,它会抛出数据库被锁定的异常.
抛出异常:
ExecuteNonQuery("DELETE FROM Employees WHERE id=1");
Run Code Online (Sandbox Code Playgroud)
以下是我的功能:
public bool OpenConnection()
{
if (Con == null)
{
Con = new SQLiteConnection(ConnectionString);
}
if (Con.State == ConnectionState.Closed)
{
Con.Open();
//Cmd = new SQLiteCommand("PRAGMA FOREIGN_KEYS=ON", Con);
//Cmd.ExecuteNonQuery();
//Cmd.Dispose();
//Cmd=null;
return true;
}
if (IsConnectionBusy())
{
Msg.Log(new Exception("Connection busy"));
}
return false;
}
public Boolean CloseConnection()
{
if (Con != null && Con.State …Run Code Online (Sandbox Code Playgroud) 我正在调查SQLite作为存储引擎,并且很想知道SQLite是否在读取时锁定数据库文件.
我担心读取性能,因为我计划的项目写入很少,但许多读取.如果数据库确实锁定了,是否可以采取措施(例如内存缓存)来缓解这个问题?