我只对某些查询 从SQLite获取数据库被锁定异常。
下面是我的代码:当我执行任何选择语句时,它工作正常。
当我在Jobs
Table 上执行任何 write 语句时,它也可以正常工作。
这工作正常:
ExecuteNonQuery("DELETE FROM Jobs WHERE id=1");
但同样,如果我对表执行查询,它会引发数据库被锁定Employees
的异常。
这会引发异常:
ExecuteNonQuery("DELETE FROM Employees WHERE id=1");
以下是我的功能:
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 == ConnectionState.Open)
{
if (Cmd != null) Cmd.Dispose();
Cmd = null;
Con.Close();
return true;
}
return false;
}
public Boolean ExecuteNonQuery(string sql)
{
if (sql == null) return false;
try
{
if (!OpenConnection())
return false;
else
{
//Tx = Con.BeginTransaction(IsolationLevel.ReadCommitted);
Cmd = new SQLiteCommand(sql, Con);
Cmd.ExecuteNonQuery();
//Tx.Commit();
return true;
}
}
catch (Exception exception)
{
//Tx.Rollback();
Msg.Log(exception);
return false;
}
finally
{
CloseConnection();
}
}
这是例外:在第 103 行:Cmd.ExecuteNonQuery();
发现异常:类型:System.Data.SQLite.SQLiteException 消息:数据库已锁定 数据库已锁定 源:System.Data.SQLite
Stacktrace:在 System.Data.SQLite.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior 行为) 在 System.Data.SQLite.SQLiteDataReader.NextResult() 的 System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt) .SQLite.SQLiteCommand.ExecuteReader(CommandBehavior 行为) 在 System.Data.SQLite.SQLiteCommand.ExecuteNonQuery() 在 TimeSheet6.DbOp.ExecuteNonQuery(String sql) 在 d:\Projects\C# Applications\Completed Projects\TimeSheet6\TimeSheet6\DbOp。 CS:第 103 行