我需要帮助,
我有一张只有3条记录的表格,我只想更新其中一条,
我正在尝试使用SQLite浏览器的SQL命令,它完美地工作
但是当我在C#中使用相同的SQL时,程序会冻结(错误的例外只会冻结)。
这就是行:
query = new SQLiteCommand();
query.CommandText = "UPDATE athletes SET finishing_time = 123123123 WHERE epc = 'E2:00:30:73:99:02:01:31:16:70:6A:A3'";
query.Connection = m_dbConnection;
query.ExecuteNonQuery();
我在一系列方法中试过这个,
我尝试过SQLite参数,
我尝试了字符串格式化,我也尝试了如上所述的直接方法。
他们都引发了同样的问题,节目冻结。
这是我第一次使用sqlite和c#。
所以我希望我能在这里找到帮助。
更新:冻结后我等了大约3到4分钟,我得到异常数据库被锁定。
答案 0 :(得分:2)
找到它,
我有和SQLiteDataReader对象打开导致问题。 我使用{}将SQLiteDataReader放在里面,问题就解决了。
答案 1 :(得分:0)
冻结后我等了大约3到4分钟,我得到了例外 数据库被锁定。
这表明运动员桌上存在死锁(或锁定未释放)。是否有其他查询访问此表?如果是,请在帖子上显示。
如果您在SQLite浏览器上使用语法BEGIN或BEGIN TRANSACTION,请确保您有相应的COMMIT或END TRANSACTION,因为如果缺少后者,则不会释放锁定,这可能是您的应用程序无法解决的原因访问所述表。要解决此问题,您可以重置SQLite服务并确保避免上述错误。
例如:
BAD(锁定不会被释放)
BEGIN TRANSACTION
UPDATE athletes SET finishing_time = 123123123 WHERE epc = 'E2:00:30:73:99:02:01:31:16:70:6A:A3'
GOOD(锁定将被释放)
BEGIN TRANSACTION
UPDATE athletes SET finishing_time = 123123123 WHERE epc = 'E2:00:30:73:99:02:01:31:16:70:6A:A3'
COMMIT
编辑:这只是一个想法所以没有投票请xD