我无法打开sqlite数据库

时间:2015-03-18 11:48:07

标签: c# winforms sqlite

我需要在这里找到sqlitedb

C:\Users\xxx\AppData\Local\Mozilla\Firefox\Profiles\zxl8ocql.default.places.sqlite.

以下代码在访问Google Chrome数据时有效:

 private const string PathToChromeData = @"\Google\Chrome\User Data\Default\History";
 private const string PathToFirefoxData = @"\Mozilla\Firefox\Profiles\zxl8ocql.default\places.sqlite";



  string pathh = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), PathToFirefoxData);

                using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + pathh + ";Version=3;New=False;;"))
                {
                    connection.Open();
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter("Select * from moz_places", connection);

   DataSet ds = new DataSet();
            adapter.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];

所以我稍微改变了它以获取Firefox数据。但是我得到了这个例外:

unable to open database file 

然后我在SO上检查了几个类似的线程。并意识到Firefox在运行时锁定了这个数据库。而我关闭了Firefox甚至改变了数据库的位置。我检查了连接字符串,但似乎是正确的。这有什么不对?

2 个答案:

答案 0 :(得分:0)

您的大小为0 KB,因为您正在错误的目录中搜索历史记录文件。

Local替换为Roaming,您将获得原始的places.sqlite文件。

新路径将是 C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\zxl8ocql.default\places.sqli‌​te

为什么在Local中找到0 KB的db?

当您尝试使用API​​打开db文件时,如果文件不存在,则会创建一个新的空文件。这就是为什么你在本地找到一个0 KB的sqlite文件。

好吧,我也遇到了与上述相同的问题。

我正在研究它。如果我得到,我会发布一个解决方案。

答案 1 :(得分:0)

我很高兴我把它搞清楚并修好了。

问题在于sql版本; db是用更高版本创建的,我试图用较低版本的sqlite打开它。

应该处理它,至少它们应该显示正确的信息。

要打开firefox db,您需要sqlite版本3.8.x.