我需要在这里找到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甚至改变了数据库的位置。我检查了连接字符串,但似乎是正确的。这有什么不对?
答案 0 :(得分:0)
您的大小为0 KB,因为您正在错误的目录中搜索历史记录文件。
将Local
替换为Roaming
,您将获得原始的places.sqlite
文件。
新路径将是
C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\zxl8ocql.default\places.sqlite
。
为什么在Local中找到0 KB的db?
当您尝试使用API打开db文件时,如果文件不存在,则会创建一个新的空文件。这就是为什么你在本地找到一个0 KB的sqlite文件。
好吧,我也遇到了与上述相同的问题。
我正在研究它。如果我得到,我会发布一个解决方案。
答案 1 :(得分:0)
我很高兴我把它搞清楚并修好了。
问题在于sql版本; db是用更高版本创建的,我试图用较低版本的sqlite打开它。
应该处理它,至少它们应该显示正确的信息。
要打开firefox db,您需要sqlite版本3.8.x.