[R] erreur de chargement de sqlite3.dll

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

[R] erreur de chargement de sqlite3.dll

#1

Message par GMH »

Bonjour,

Je tente de faire fonctionner les codes que jchd propose dans le fil viewtopic.php?f=3&t=15198&p=104079&hili ... up#p104079

Dans les uns j'obtiens le message d'erreur signalant que le fichier sqlite.dll ne peut être chargé. Dans d'autres, j'obtiens le message d'erreur signalant que le librairie est mal utilisée.

J'ai placé la dll sqlite3.dll dans le dossier du code, dans le sous-dossier "config" du dossier sus-dit, dans la dossier System32 et dans le dossier SysWOW64.

Voyez-vous la raison de ces échecs ?

Je vous remercie.
Modifié en dernier par GMH le ven. 31 janv. 2020 10:43, modifié 1 fois.

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2115
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] erreur de chargement de sqlite3.dll

#2

Message par jchd »

C'est une application x86 ou x64 ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..] erreur de chargement de sqlite3.dll

#3

Message par GMH »

Merci de votre réponse rapide.

Je suis sous Windows 64.

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2115
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] erreur de chargement de sqlite3.dll

#4

Message par jchd »

Ma question porte sur l'application, pas l'OS !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2115
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] erreur de chargement de sqlite3.dll

#5

Message par jchd »

La DLL peut se trouver à plusieurs endroits, par exemple le dossier de lancement de l'exe, les dossiers système de l'OS ou bien encore selon une variable d'environnement. Voir la doc officielle sur ce point (sqlite.org).

Si l'exe est un x86 (32 bits) la dll recherchée est sqlite3.dll à défaut d'être explicitement spécifiée en argument de *_startup.
Si l'exe est un x64 (64 bits) *_startup recherche par défaut sqlite3_x64.dll ; si une dll est explicite en argument et si elle ne contient pas la chaîne '_x64' alors celle chaîne est ajoutée avant l'extension.

Exemple en x64 :

Code : Tout sélectionner

#AutoIt3Wrapper_UseX64=y
#AutoIt3Wrapper_Run_AU3Check=n

#include <SQLite.au3>

Const $SQLITE_DLL = "C:\SQLite\bin\sqlite3_x64.dll" ;<-- Change to the location of your sqlite dll
Local $aRow

;Init sqlite and create a memory db
_SQLite_Startup($SQLITE_DLL, False, 1)
If @error Then Exit MsgBox($MB_ICONERROR, "SQLite Error", "Unable to start SQLite. Check existence of DLL")
_SQLite_Open()

Local $s = "CREATE TABLE if not exists t1 (a INTEGER PRIMARY KEY, b char, c char);" & _
		"INSERT INTO t1 VALUES (4, 'D', 'one'), (2, 'B', 'two'), (6, 'F', 'three'), (5, 'E', 'two'), (3, 'C', 'three'), (1, 'A', 'one'), (7, 'G', 'one');"
_SQLite_Exec(-1, $s)
$s = "SELECT a, b, group_concat(b, '->') OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Sequence FROM t1;"
Local $aRows, $iRows, $iCols
_SQLite_GetTable2d(-1, $s, $aRows, $iRows, $iCols)
_SQLite_Display2DResult($aRows)

_SQLite_Shutdown()
La même chose en X86 :

Code : Tout sélectionner

#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Run_AU3Check=n

#include <SQLite.au3>

Const $SQLITE_DLL = "C:\SQLite\bin\sqlite3.dll" ;<-- Change to the location of your sqlite dll
Local $aRow

;Init sqlite and create a memory db
_SQLite_Startup($SQLITE_DLL, False, 1)
If @error Then Exit MsgBox($MB_ICONERROR, "SQLite Error", "Unable to start SQLite. Check existence of DLL")
_SQLite_Open()

Local $s = "CREATE TABLE if not exists t1 (a INTEGER PRIMARY KEY, b char, c char);" & _
		"INSERT INTO t1 VALUES (4, 'D', 'one'), (2, 'B', 'two'), (6, 'F', 'three'), (5, 'E', 'two'), (3, 'C', 'three'), (1, 'A', 'one'), (7, 'G', 'one');"
_SQLite_Exec(-1, $s)
$s = "SELECT a, b, group_concat(b, '->') OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Sequence FROM t1;"
Local $aRows, $iRows, $iCols
_SQLite_GetTable2d(-1, $s, $aRows, $iRows, $iCols)
_SQLite_Display2DResult($aRows)

_SQLite_Shutdown()
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] erreur de chargement de sqlite3.dll

#6

Message par GMH »

Grand merci jchd pour votre long message de réponse très efficace.
Le second code (x86) fonctionne parfaitement.
Je vais partir de ce dernier pour construire mon petit programme faisant appel à une base sqlite.
Merci encore et bonne journée à vous.

Répondre