如何解决无法从SQLite数据库检索智能设备应用程序的记录
| 我将sqlite.NET与C#[visual studio 2008]一起使用,并添加了\'System.Data.sqlite.dll \'作为参考。以下代码与Windows应用程序配合使用,用于将数据库文件中的数据提取到datagrid中。 private void SetConnection()
{
sql_con = new sqliteConnection(\"Data Source=emp.db;Version=3;\");
}
public DataTable LoadData()
{
SetConnection();
sql_con.open();
sql_cmd = sql_con.CreateCommand();
string CommandText = \"select * from employeedetails\";
transaction=sql_con.BeginTransaction();
DA = new sqliteDataAdapter(CommandText,sql_con);
DS.Reset();
DA.Fill(DS);
DT = DS.Tables[0];
transaction.Commit();
sql_con.Close();
return DT;
}
调用:
private void Form1_Load(object sender,EventArgs e)
{
EmpTable obj = new EmpTable();
this.dataGridView1.DataSource = obj.LoadData();
}
相同的代码不适用于C#“智能设备应用程序”。它显示了一个例外:没有这样的表'employeedetails \'。
对于智能设备应用程序,我从\“ sqlite / CompactFramework \”文件夹添加了System.Data.sqlite.dll。
请帮助我解决此问题。
提前致谢。
解决方法
我不确定这是否是造成您问题的原因,但是过去,移动设备和sqlite在解决此问题时遇到了问题:
对于使用紧凑框架的应用程序,您需要在项目中包括SQLite.Interop.xxx.DLL(除了常规的System.Data.SQLite.DLL)。确保将文件设置为要复制,如果较新或始终复制。
请记住,您无法设置对interop dll的引用。您必须通过将其添加为文件来将其包括在项目中。
有关更多信息,请访问“分发SQLite引擎和ADO.NET程序集”部分下的此网站。
, 感谢大伙们,
我已经解决了问题。正如“ siyw”所说,问题是应用程序找不到“ db文件”。
对于Windows应用程序,
db文件必须位于生成.exe文件的调试文件夹中。这样,无需指定数据库文件的路径。
对于智能设备应用,
该数据库文件将在设备的根文件夹中生成。如果我们用exe方式绑定数据库文件,它将找不到该文件,并将在根文件夹中创建一个新数据库。
为避免这种情况,在创建CAB文件时,我们必须创建自定义文件夹[ex。 DBfolder]并将db文件放在文件夹中。
将连接字符串中的路径设置为,
sql_con = new SQLiteConnection(\"Data Source=DBfolder/emp.db;Version=3;\");
现在,该数据库由应用程序找到。
, sql_con = new SQLiteConnection(\"Data Source=emp.db;Version=3;\");
我认为您需要在此处指定完整路径,并确保它是正确的。如果路径是一个不存在的文件,它将在其中创建一个新的emp.db数据库文件。这个新文件显然将是空的并且没有任何表,因此它将给出一个no such table \'employeedetails\'
异常,例如,如果查询它,将会得到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。