Что нового

Ошибка загрузки SQLite3.dll

TpeTTep

Новичок
Сообщения
45
Репутация
1
Доброго времени суток. Пытаюсь поработать с базой данных SQLite, но встрял на самом первом шаге. SQLite3.dll никак не хочет загружаться! Скачивал его с официального сайта, закидывал в папку с сами скриптом, закидывал в папку System32, SysWOW64, даже пытался установить его через FileInstall. Проблему можно было бы списать на мою криворукость, но у меня даже примеры из справки выдают ошибку. Уже начинаю думать, что проблема в винде, хотя до этого вполне успешно работал с MySQL. Помогите плез :Lamer:
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23

All2khoff

Продвинутый
Сообщения
376
Репутация
68
Добрый день, тема не помечена как решенная.
Пытаюсь работать с примерами но ошибка таже что и у ТС.
Безопасный запуск включил но эффекта нет, пожалуйста расскажите что я делаю нет так?
файлы SQLite.dll лежат во всех мыслимых каталогах.

Код:
#include <SQLite.au3>
#include <SQLite.dll.au3>
_SQLite_SafeMode(True)

_SQLite_Startup()
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось загрузить SQLite3.dll")
    Exit -1
EndIf
ConsoleWrite("Версия библиотеки SQLite = " & _SQLite_LibVersion() & @CRLF)

_SQLite_Open() ; создает базу данных в памяти и не использует дескриптор для ссылки на неё
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось создать базу данных в памяти!!")
    Exit -1
EndIf
_SQLite_Close()

Local $hMemDb = _SQLite_Open() ; создает базу данных в памяти
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось создать базу данных в памяти!")
    Exit -1
EndIf

Local $hTmpDb = _SQLite_Open('') ; создает временную базу данных на диске
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось создать временную базу данных на диске!")
    Exit -1
EndIf

Local $sDbName = _TempFile()
Local $hDskDb = _SQLite_Open($sDbName) ; открывает постоянную базу данных на диске
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось открыть постоянную базу данных на диске!")
    Exit -1
EndIf

; вы можете использовать 3 базы данных по мере необходимости, ссылаясь на их дескрипторы

; закрывает созданные нами базы данных, порядок не важен
_SQLite_Close($hTmpDb) ; временная база данных будет удалена автоматически при закрытии
_SQLite_Close($hDskDb) ; база данных в обычном файле может быть открыта позже
_SQLite_Close($hMemDb)

; удаляет созданный файл базы данных
FileDelete($sDbName)

_SQLite_Shutdown()
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
SQLite3.dll должна быть либо в папке скрипта либо в папке Windows соответствующей разрядности
сама библиотека находится в папке Include
 

All2khoff

Продвинутый
Сообщения
376
Репутация
68
Верно, я расположил библиотеку в
Код:
"C:\Windows\System32"
"C:\Windows\SysWOW64"
C:\Program Files (x86)\AutoIt3\Include
в папке скрипта в том числе
SQLite.dll переименовывал в SQLite3.dll
качал отдельно 64 разрядную SQLite.dll
ничего не помогает. не знаю в чём может быть дело.
win10 не может быть причиной?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
версия библиотеки, наверное, не та. за проверку версии отвечает
#include <SQLite.dll.au3>
закоментируй эту строку. ошибка не будет появляться.
 

All2khoff

Продвинутый
Сообщения
376
Репутация
68
Medic84 сказал(а):
К сожалению не помогло.
joiner сказал(а):
закоментируй эту строку. ошибка не будет появляться.
и это решение не возымело эффекта, следующая команда тоже ловит ошибку.
SQLite самые свежие библиотеки, AutoIT тоже обновлен, может наоборот надо предыдущие версии пробовать?

колдунство, этот код сработал. буду копать дальше
Код:
#include <sqlite.au3>
#include <array.au3>
Global $hQuery, $aR, $iRows, $iColumns, $aResult
Dim $left[2], $right[2]

GUICreate('', 1200, 300)
$left_lv = GUICtrlCreateListView('клиент|адрес', 10, 10, 550, 280)
$right_lv = GUICtrlCreateListView('дата приёма|полученная сумма', 570, 10, 550, 280)
_SQLite_Startup()
_SQLite_Open('clients.db')
_SQLite_Exec(-1, "CREATE TABLE IF NOT EXISTS clients (name, adress, date_adopted, summ);")
_SQLite_Exec(-1, "INSERT INTO clients VALUES ('Вася Пупкин','Воронеж ул.Лизюкова д.20','01.04.2009','миллион');")
_SQLite_Exec(-1, "INSERT INTO clients VALUES ('Анна Каренина','Питер Невкий проспект д.16','09.06.1860','1000');")

$result = _SQLite_GetTable(-1, "SELECT name, adress FROM clients;", $left, $iRows, $iColumns)
;~ _ArrayDisplay($left)
For $i = 3 To UBound($left) - 1 Step 2
    GUICtrlCreateListViewItem($left[$i] & '|' & $left[$i+1], $left_lv)
Next
$result_2 = _SQLite_GetTable(-1, "SELECT date_adopted, summ FROM clients;", $right, $iRows, $iColumns)
;~ _ArrayDisplay($right)
For $i = 3 To UBound($right) - 1 Step 2
    GUICtrlCreateListViewItem($right[$i] & '|' & $right[$i+1], $right_lv)
Next
GUISetState()
While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = -3
        Exit
    EndSelect
WEnd
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Glass4217
у меня версия языка 3.3.12.0 и бета версия 3.3.15.1
в обеих работает последний код. dll находится в папке с кодом.
скачал последнюю версию https://www.autoitscript.com/autoit3/pkgmgr/sqlite/
Win 10 x64
разрядность библиотеки соответствует разрядности запуска кода?
 

All2khoff

Продвинутый
Сообщения
376
Репутация
68
не знаю что я такого сделал, видимо я и в правду качал не ту разрядность библиотек, сейчас уже всё работает, видимо я совсем разжижил свои мозги, надо кушать больше витаминов.
Всем спасибо за участие, SQLite у меня заработал, буду учиться им работать.
 
Верх