无法从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程序集”部分下的此网站。     

bab

        感谢大伙们, 我已经解决了问题。正如“ 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\'
异常,例如,如果查询它,将会得到。     

要回复问题请先登录注册