gpt4 book ai didi

sqlite - 使用 PowerShell 和 System.Data.SQLite 打开 Firefox 文件 'places.sqlite'

转载 作者:行者123 更新时间:2023-12-03 18:01:02 26 4
gpt4 key购买 nike

我想运行以下代码:

$dll = [System.Reflection.Assembly]::LoadWithPartialName("System.Data.SQLite")
# [System.Reflection.Assembly]::LoadFrom("C:\Program Files\System.Data.SQLite\bin\System.Data.SQLite.dll")

$ConnectionString = "Data Source=C:\Var\sqlite_ff4\places.sqlite"

$conn = New-Object System.Data.SQLite.SQLiteConnection
$conn.ConnectionString = $ConnectionString
$conn.Open()
$sql = "SELECT * from moz_bookmarks"
$cmd = New-Object System.Data.SQLite.SQLiteCommand($sql, $conn)

# $cmd.CommandTimeout = $timeout

$ds = New-Object system.Data.DataSet
$da = New-Object System.Data.SQLite.SQLiteDataAdapter($cmd)
$da.fill($ds)

$conn.close()

$ds.tables[0]

在线上
$conn.Open()

我得到错误
Exception calling "Open" with "0" argument(s): "File opened that is not a database file
file is encrypted or is not a database"
At line:5 char:11
+ $conn.Open <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

文件 places.sqlite来自 Firefox 4.0。我正在使用 http://sourceforge.net/projects/sqlite-dotnet2/files/ .

编辑:

以上适用于 Firefox 3.0 文件 places.sqlite . Firefox 4.0 似乎有些不同。

好像不是密码问题,是版本问题。感谢 this Stack Overflow post我发现,我需要 SQLite 3.7。

我希望我能找到一些当前的 ADO 提供者。

sqlite-dotnet-x86-1006900.exe 来自 here不工作

使用“0”参数调用“打开”的异常:“无法加载 DLL 'SQLite.Inte
rop.DLL': 找不到指定的模块。 (来自 HRESULT 的异常:0x8
007007E)"

它可能是一个调试版本。是否有没有 SQLite.Interop.DLL 的预构建版本?

最佳答案

终于解决了(通过未在 GAC 中安装的解决方法):

要打开 Firefox 4.0 places.sqlite,您必须使用 sqlite 的 3.7 或更高版本。

我从 here 安装了 sqlite-dotnet-x86-1007000.exe , 但有 不是 选中在 GAC 中安装复选框。在 GAC 中安装仍然有问题。

现在下面的 PowerShell 代码在places.sqlite 的副本上运行良好(请记住,在被 Firefox 锁定时无法打开它):

# adapt these two lines to your loacal system
[System.Reflection.Assembly]::LoadFrom("C:\Program Files\System.Data.SQLite\bin\System.Data.SQLite.dll")
$ConnectionString = "Data Source=C:\Var\sqlite_ff4\places.sqlite"

$conn=new-object System.Data.SQLite.SQLiteConnection
$conn.ConnectionString=$ConnectionString
$conn.Open()
$sql = "SELECT * from moz_bookmarks"
$cmd=new-object System.Data.SQLite.SQLiteCommand($sql,$conn)
$ds=New-Object system.Data.DataSet
$da=New-Object System.Data.SQLite.SQLiteDataAdapter($cmd)
$da.fill($ds)
$conn.close()
$ds.tables[0]

由于 sqlite-dotnet-x86-1006900.exe 他们从 System.Data.SQLite.dll 吐出 SQLite.Interop.dll,但在 GAC 中安装它时遇到问题。如果您选中在 GAC 中安装复选框,您会得到一个
无法加载 DLL 'SQLite.Interop.DLL
错误。有一个封闭的 ticket对于这个错误,但我认为它不是固定的。票再次重新打开。检查那里的新工作或解决方案。

关于sqlite - 使用 PowerShell 和 System.Data.SQLite 打开 Firefox 文件 'places.sqlite',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5756326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com