Je veux exécuter le code suivant :
$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]
À la ligne
$conn.Open()
Je reçois l'erreur
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
Le fichier places.sqlite
provient de Firefox 4.0. J'utilise http://sourceforge.net/projects/sqlite-dotnet2/files/.
ÉDITION :
Le code ci-dessus fonctionne pour le fichier places.sqlite
de Firefox 3.0. Il semble y avoir une différence avec Firefox 4.0.
Il ne semble pas s'agir d'un problème de mot de passe, mais d'un problème de version. Grâce à ce post sur Stack Overflow que j'ai trouvé, j'ai besoin de SQLite 3.7.
J'espère trouver un fournisseur ADO actuel.
sqlite-dotnet-x86-1006900.exe depuis ici ne fonctionne pas
Exception calling "Open" with "0" argument(s): "Unable to load DLL 'SQLite.Inte rop.DLL': The specified module could not be found. (Exception from HRESULT: 0x8 007007E)"
C'est peut-être une version de débogage. Y a-t-il une version précompilée sans SQLite.Interop.DLL?