当我使用LINQ访问SQLite数据库时,出现了以下问题。简化后的代码如下:
以下行代码出现错误: "SQL逻辑错误或缺失数据库\r\n未知错误"
在这两种情况下,我在调试输出中都会得到以下错误:
什么会导致这个错误?我希望有人之前遇到过这个问题并能指引我。但是最终我可能需要在调试器中逐步执行System.Data.SQLite代码。
编辑:根据GeorgeT下面的评论,我添加了
using System.Linq
using System.Data.Linq
using System.Data.Linq.Mapping
using System.Data.SQLite
...
DataContext sqltContext= new DataContext(sqltConnection);
featureTable = sqltContext.GetTable<FeatureModel>();
count= featureTable.Count(); // count == 1
以下行代码出现错误: "SQL逻辑错误或缺失数据库\r\n未知错误"
//currentFeature = featureTable.First();
但是迭代器可以正常工作:
foreach (var feature in featureTable)
{
currentFeature = feature;
break;
}
在这两种情况下,我在调试输出中都会得到以下错误:
SQLite error (1): near ".": syntax error
什么会导致这个错误?我希望有人之前遇到过这个问题并能指引我。但是最终我可能需要在调试器中逐步执行System.Data.SQLite代码。
编辑:根据GeorgeT下面的评论,我添加了
sqltContext.Log = Console.Out;
。根据日志输出,似乎LINQ正在生成一个不兼容SQLite的SELECT TOP
命令。解决方法似乎是避免使用First
或FirstOrDefault
方法,或者使用类似DBLinq的东西。