无法从sqlite数据库中删除一行..任何想法?

时间:2016-01-09 00:12:23

标签: c# wpf sqlite datagrid

我有一个在数据网格上显示的sqlite数据库。 我没有任何例外地执行查询,但记录不会被删除。 我也很难更新记录。 有任何想法吗? 这是我编码的:

{{ first_name }}

1 个答案:

答案 0 :(得分:0)

可能有一种比“真空”命令更好的方法,感觉就像使用核武器拍打苍蝇一样。根据{{​​3}},Vacuum命令重建整个数据库,旨在解决随着时间推移可能出现的db文件碎片问题。实际上,您引用的ROWID行为仅在传递时提及:

  

VACUUM命令可能更改任何表中条目的ROWID   没有明确的INTEGER PRIMARY KEY。

(强调我的 - 那里的“可能”这个词的意思是“不要编写依赖于这种行为的代码”)。

不知道为什么RowID 5对您的应用程序来说是特殊的,很难提出更好的答案。如果您始终要删除第5个最旧的行,则可以执行类似

的命令
delete from Activity where RowID = (
    select max(RowID) from (select RowID from Activity order by RowID limit 5)
);

此命令可能与您想要的完全不同(如果只有四行,它将删除第4个最旧的行,如果只有一行,则删除唯一的行)。但希望它能让您了解如何以更直接,更明确的方式完成您想要的任务,而不是重建整个数据库。