5

我刚刚开始研究一个示例应用程序,它只调用我的 SQLite 数据库上的一些表,并且我已经设法解决了除此之外发生的其他问题。

尽管我已经对此进行了搜索,但针对连接字符串、权限问题等的建议解决方案似乎都不是有效的并且对我有用。对于权限,我添加了Everyone具有完全控制权的用户,但仍然出现相同的错误。

下面是我试图执行的代码:

// calling function
void getRecords2()
    {
        MySqlLite.DataClass ss = new MySqlLite.DataClass();
        DataTable dt = ss.selectQuery("select * from english_words"); 
    }

// the SQLite class that execute the code
using System.Data;
using System.Data.SQLite;

namespace MySqlLite
{
    class DataClass
    {
        private SQLiteConnection sqlite;

        public DataClass()
        {            
            //This part killed me in the beginning.  I was specifying "DataSource"
            //instead of "Data Source"
            sqlite = new SQLiteConnection(@"Data Source=C:\testwork\db\MrPick.sqlite3.db;Version=3;FailIfMissing=True");

        }

        public DataTable selectQuery(string query)
        {
            SQLiteDataAdapter ad;
            DataTable dt = new DataTable();

            try
            {
                SQLiteCommand cmd;
                sqlite.Open();  //Initiate connection to the db
                cmd = sqlite.CreateCommand();
                cmd.CommandText = query;  //set the passed query
                ad = new SQLiteDataAdapter(cmd);
                ad.Fill(dt); //fill the datasource

                cmd.Dispose();
                sqlite.Dispose();  

            }
            catch (SQLiteException ex)
            {
                //Add your exception code here.
            }
            sqlite.Close();
            return dt;
        }
    }
}

注意:我使用了以下程序集:

ADO.NET SQLite Data Provider
Version 1.0.82.0 September 3, 2012
Using SQLite 3.7.14
Originally written by Robert Simpson
Released to the public domain, use at your own risk!
Official provider website: http://system.data.sqlite.org/

我真的很感谢你在这方面的帮助。

4

2 回答 2

11

根据您的评论,您收到“无法打开数据库文件”错误,因为您将代码指向一个不存在的文件。

“未找到表”错误意味着它找到了数据库,但没有找到您要查找的表。另一方面,“无法打开数据库文件”意味着它甚至找不到数据库,甚至没有费心寻找表。当您收到“找不到表格”时,您离它正常工作更近了。

您应该将路径改回以匹配磁盘上的文件,然后使用Firefox SQLite Manager之类的工具来确认该english_words表确实存在于您的数据库中。

如果没有,您应该使用该工具创建它,如果是,您应该在此处发布另一个关于“找不到表”错误的问题。

希望这会有所帮助。

于 2012-11-19T19:42:33.547 回答
9

当我遇到这个错误时,我必须parseViaFrameworkSQLiteConnection构造函数中设置为true.

SQLiteConnection connection = new SQLiteConnection(connectionString, true);
connection.Open();
于 2017-08-21T10:37:05.237 回答