Lazarus ошибка sqlite3 dll

Topic: [Solved] Can not load SQLite client library «SQLite3.dll». Check your install…  (Read 38261 times)

Hi,

1.04 32 bit on Win7 64 bit:

Today all of my SQLite bases projects stopped working with above error. Am not aware of having made any changes besides some installs/uninstalls (which I realize may somehow have impacted said DLL).

Which version of that DLL needs to be present where? I have 6 different copies of it all over my harddrive. I did copy every single one of them into the project dir of one of my SQLite projects and tried to set the SQLite3Connection to active — all of them failed.

Do both run- & design time look for the same DLL locations? I have an sqlite3.inc in my Lazarus tree which seems to look for 3.5.9 — most of the DLLs on my system unfortunately have no version information (only one by Apple does)….

Any pointers?

TIA,
Kai

« Last Edit: December 18, 2012, 04:00:15 am by kpeters58 »


Logged

Lazarus 2.0.4/FPC 3.0.4/Win 64


Do both run- & design time look for the same DLL locations?

No, the design time uses what lazarus loads, the run time uses what you app loads. Both can be the same though.

Since SQLite is portable, you can put it along with your application (it’s windows only, right?) and it would be preferred over system wide one. The common problem is a mix of 32-bit and 64-bit app and library (any combination of them). 32-bit app should use 32-bit dll, and so is for 64-bit.


Logged


Hm — certainly not the case here: Fresh install of 1.04 32 bit and latest precompiled 32 bit SQLite3.dll from sqlite.org inf the project directory.

Can’t seem to debug into the underlying sources (even though I rebuilt Lazarus with debug) — must be missing something.

Tried a text search for the error message across my entire lazarus directory but it only shows  up in lazarus.exe — nowhere in the source…

Am really confused now..


Logged

Lazarus 2.0.4/FPC 3.0.4/Win 64


Analyzed a working setup on a different machine with procexplorer and found that Lazarus 32bit wants to load sqlite3.dll from \Windows\SysWow64\. Why it wouldn’t fall back on looking for it in the current project folder is a mystery to me….????

Seems that one of my uninstalls must have removed that DLL from there. Downloaded the latest one from sqlite.org, put it there and all appears to be well.


Logged

Lazarus 2.0.4/FPC 3.0.4/Win 64


Analyzed a working setup on a different machine with procexplorer and found that Lazarus 32bit wants to load sqlite3.dll from \Windows\SysWow64\

Now I’m confused, is it your application or Lazarus that’s having this loading problem?


Logged


Probably Lazarus. He probably doesn’t have the sqlite dll in his project source dir (AFAIR, putting it in the lazarus dir works too) — he probably only has the dll in the project output dir…


Logged


I am talking about Lazarus — and I do have a good 32bit DLL in the project source dir (right next to the project’s lpi file).

It seems that when using 32bit Lazarus on a 64 bit Windows system, one MUST have a 32 bit sqlite3.dll in \windows\syswow64. Without it, all attempts to open a connection at designtime fail (at least on my 2 Windows 7 boxes).

At run time, my application uses the DLL in its source directory as expected (verified with procexplorer)

K


Logged

Lazarus 2.0.4/FPC 3.0.4/Win 64


Sorry, I think these 2 statements contradict each other:
— sqlite3.dll together with project.lpr:

I am talking about Lazarus — and I do have a good 32bit DLL in the project source dir (right next to the project’s lpi file).

-sqlite3.dll together with project.exe

At run time, my application uses the DLL in its source directory as expected (verified with procexplorer)

*)
… unless: project.exe and project.lpr are in the same directory?

Could you confirm that (e.g. copy/paste a dir /s)?

*) the application should not use the dll in the *source* directory but the *executable*/*application*/*target* directory (however you want to call it). As said, the source & application dirs can be the same…


Logged


Yes, they are the same in this case.


Logged

Lazarus 2.0.4/FPC 3.0.4/Win 64


Ok. Thanks. Hope somebody else can reproduce this…. and if so, it’s either a bug or the docs need to be updated.


Logged


I am talking about Lazarus — and I do have a good 32bit DLL in the project source dir (right next to the project’s lpi file).

You should have the DLL in Lazarus directory.


Logged


@Leledumbo, you’re right.

@Kpeters58, sorry I steered you in the wrong direction — seems I picked up the wrong ideas. Thinking about it, it makes sense that the IDE searches its own dir for the dlls as that is the way Windows works….  :-[

AFAIR, there were some wiki pages that have the wrong instructions — I’ll update them…


Logged


Makes perfect sense and works — thanks!


Logged

Lazarus 2.0.4/FPC 3.0.4/Win 64


I know it is solved but just to put some more evidence I’m in Linux and have a similar problem:
Lazarus at designtime searches for a specific version of mysql, sqlite and that kind of libraries. And of course I don’t have just the exact version of what Lazarus expect.

My system is Ubuntu 12.04 32 bits.

I’m actually using Zeos so I can specify the Library location at designtime. So that is not a problem for me. But it happens with the lazarus SQLdb components.

I think the correct way is not to search for a specific version (major and minor numbers included) but at least only for a major version (or libsqlite.so for example). But actually it searches for some like libsqlite3.so.0.8.6

Lazarus 1.0.2 32 bits


Logged


Lazarus at designtime searches for a specific version of mysql, sqlite and that kind of libraries. And of course I don’t have just the exact version of what Lazarus expect.

Yes, so does ZeosDB search for a certain version The problem is with the mysql libraries that expect a quite detailed specific version (e.g. 5.1 not just 5.x) as documented ad nauseam.

I’m actually using Zeos so I can specify the Library location at designtime. So that is not a problem for me. But it happens with the lazarus SQLdb components.

You can specify the library name at designtime with sqldb, too. Specifying the library location with Zeos seems… interesting! Would you have some documentation link for that?


Logged


aiisakov писал(а):Я понял, что для полного освоения Linux графических приложений мало.

Чего именно не хватает?
У меня основная система Linux Mint 18.3
Пользоваться начал с Ubuntu 10.04
Дома на убунтах и минтах — домашний медиасервер-файлохранилище, ноуты, на маленьком безвентиляторном компе htpc стоит Linux Mint+KODI

Все программы для дома и хобби имеются:
почта — громоптица как и в винде была.
браузеры — firefox, chrome, chromium — как и в винде
видеопрееры — Kodi, VLC (как и винде) и куча других.
просмотр и кромсание картинок — XnView или GwenView по функционалу такие же как FastStone в винде.
Paint — стоит два варианта
Не линейный видеомонтаж — KDEnLive (если сборка и для винды)
Skype есть
Торрентокачалка Transmission
Android Studio , Lazarus — работают, использую регулярно
запись с экрана — vokoscreen
Виртуальный планетарий — Stellarium
Студии для Postgree, MySQL, SQLite3, ставил, использовал при необходимости

И т.д. и т.п. и всё это без антивируса.
Стабильная работа годами.
Для работы ставил по предложению MS в 2016 году бету MS SQL Server на Убунту. И активно использовал на нем одну базу в 22гб в течении месяца.

Для работы с MS SQL Server и написания для него утилит на Lazarus используется Win8 (с выпиленным Metro) на VirtualBox (использовал версии от 4.0 до 5.2)

Так каких приложений не хватает? Может подскажу.

aiisakov писал(а):Нужно глубоко освоить консольные команды и консольные приложения (Aptitude). С точки зрения пользователя Windows набирание команд в окне «Выполнить» это извращение не нужное обычному пользователю (не говоря уже о PowerShell). А мне это «извращение» в Linux очень нравится, поднимает твой «скилл».

Не согласен. Не нужно.
Ширпотреб (команды) легко запоминается.
Редкоиспользуемые команды у меня лично в файлик записаны или я их гуглю.
Но ~95% вещей на десктопах делается через графические оболочки и программы.
На сервере удобнее в терминале просто стрелкой вверх пролистать до нужной команды, и выполнить. Потому там да, 50% в терминале делается.
Apt зачем глубоко осваивать? и что там осваивать? Вообще Синаптик отличная графическая замена aptitude

В целом потребность в консоли в убунтовых линуксах это устаревший миф.
Моя супруга, ни разу не айтишник, пользует линукс минт с 2011года, и пару раз удивлялась, т.к. забыла, что у нее не винда.
Имхо давно ушли те времена когда пользователи в основном только в винде могли что-то делать, сейчас такой зоопарк интерфейсов и в винде и на андроидах, что пользователь еще один интерфейс сходу осваивает, тем более что ширпотребные программы зачастую кроссплатформенные и одни и те же везде стоят.

Skip to content

Installer: bundled sqlite3laz package causes Lazarus to crash at startup: can’t run because sqlite3.dll is missing

Original Reporter info from Mantis: seier

  • Reporter name: Christian Blackburn


Description:

SQLite is the most used database in the world. It’s on virtually every cell phone and used by a variety of programs including Firefox and Adobe Air. Unlike most databases it doesn’t leave 2-3 programs running all the time. It’s just a DLL that’s loaded by programs when it’s needed and otherwise doesn’t slow down a system at all. Therefore it’s the single most logical choice of database to bundle with Lazarus. Thankfully, Lazarus bundles a package designed to work with SQLite. However, the actual database, two measly files totally 600KB isn’t (sqlite3.dll and sqlite3.def). Installing the sqlite3laz package causes Lazarus to crash at startup and be completely unusable until the user figures out where and how to install the database manually.

Repro:
(On Windows 7 x64 Pro SP1)

  1. Start Lazarus 32-bit 0.9.30.2
  2. Click «Packages» —> «Install/Uninstall packages…»
  3. In the right hand list box scroll down and find «sqlite3laz 0.4»
  4. Double-click «sqlite3laz 0.4»
  5. Click [Save and rebuild IDE]
  6. Click [Continue]

Result:
The following error dialog appears:
|lazarus.exe — System Error| (X) The program can’t start because sqlite3.dll is missing from your computer. Try reinstalling the program to fix this problem.
[OK]

Pressing OK just closes Lazarus entirely, rendering it temporarily unusable.

Expected:
The installer should be installing sqlite3.dll and sqlite3.def (http://sqlite.org/sqlite-shell-win32-x86-3071000.zip) to C:\Lazarus (or wherever the {app} variable points) to prevent this unnecessary and scary user experience.

Additional information:

Please add the installer as a category for bugs in Lazarus. In a highly-componentized open source program like this, it is one of the most important parts.

Mantis conversion info:

  • Mantis ID: 21413
  • Version: 0.9.30.2
  • Monitored by: » seier (Christian Blackburn)

Logo
MurCode

  • Форумы
  • Поиск
  • О проекте

Lazarus. Запуск программы невозможен, так как на компьютере отсутствует sqlite.dll

Ghost Writer

Дата: 01.02.2019 10:25:36

Установил два пакета sqlitelaz 0.4 и sqlite3laz 0.4 посмотреть что за зверьки, среда перекомпилировалась и при запуске ошибка:

lazarus.exe — Системная ошибка
—————————
Запуск программы невозможен, так как на компьютере отсутствует sqlite.dll. Попробуйте переустановить программу.

скачал sqlite.dll с https://www.sqlite.org/download.html
кидаю в папку с лазарусом, в Windows, System32, SysWOW64 — 1х ошибка.

Куда нужно положить sqlite.dll ? и какой разрядности ?
У меня windows 64 а лазарус 32.

wadman

Дата: 01.02.2019 10:32:22

Ghost Writer
так как на компьютере отсутствует sqlite.dll

Там sqlite3.dll?

Ghost Writer

Дата: 01.02.2019 10:42:56

wadman,

точно. пакет sqlite3laz 0.4 хотел sqlite3.dll, а sqlitelaz 0.4 sqlite.dll.

Переименовал sqlite3.dll в sqlite.dll и закинул в папку с лазарусом. Ошибка точка входа в процедуру … не найден.
Это другая библиотека ?

Пока удалил sqlitelaz 0.4. Без него работает норм.

Чем вообще эти пакеты отличаются ?

wadman

Дата: 01.02.2019 11:02:38

Ghost Writer
Чем вообще эти пакеты отличаются ?

Требуемыми версиями sqlite.

Ghost Writer

Дата: 01.02.2019 11:18:07

wadman,

тогда в топку sqlitelaz . спасибо

Док

Дата: 01.02.2019 13:48:44

Ghost Writer
тогда в топку sqlitelaz . спасибо

ну, спроси. Спроси еще что-нибудь Картинка с другого сайта.

Ghost Writer

Дата: 01.02.2019 14:08:11

Док,

а ты возьми и ответь не дожидаясь вопроса Картинка с другого сайта.

wadman

Дата: 01.02.2019 14:09:52

Ghost Writer
а ты возьми и ответь не дожидаясь вопроса Картинка с другого сайта.

Можно! Но нужен программист. :)

Док

Дата: 01.02.2019 17:19:27

wadman
Ghost Writer
а ты возьми и ответь не дожидаясь вопроса Картинка с другого сайта.

Можно! Но нужен программист. :)

без ножа режете, гады! Картинка с другого сайта.

MaratIsk

Дата: 02.02.2019 10:57:02

вот такие советчики и не дают расти человеку :)

SQLiteSQLite — это встраиваемая библиотека, позволяющая нам управлять базой данных в нашем приложении без сервера, типа MySQL, Oracle Database и тд. Работать с такой базой данных одновременно может несколько процессов или потоков, за исключением записи. Для записи в такую базу требуется чтобы в данный момент к ней не осуществлялось других запросов, иначе попытка записи оканчивается неудачей.

Кстати говоря, многие известные приложения используют Sqlite:

  • Mozilla Firefox (начиная с версии 3.0)
  • Mozilla Thunderbird
  • Фреймворк Qt
  • Skype
  • 1С:Предприятие
  • Google Chrome
  • Opera

Благодаря этим приложениям, SQLite считается самой распространённой базой данных в мире.

Итак давайте попробуем создать некое приложение в котором будет использоваться база данных. Возьмем за пример «Базу сотрудников» где будет указана информация о сотрудниках некой компании, например ОАО «Devlaz.ru»

Для начала нам понадобится скачать саму библиотеку: http://www.sqlite.org/download.html

Если вы программируете под Ubuntu, Linux и других Debian-like дистрибутивы, то также требуется установить libsqlite-dev/libsqlite3-dev, не только sqlite/sqlite3.

Скачав DLL библиотеку sqlite3.dll (под windows) ее требуется закинуть в папку с Lazarus (По умолчанию это C:\Lazarus) и в папку с проектом.

После чего требуется установить пакет sqlite3laz который по умолчанию поставляется с Lazarus и пересобрать наш IDE.

С помощью sqlite3.exe скаченного с офф. сайта создаем базу данных:

Откроем CMD, перейдем в рабочий каталог sqlite3.exe, например диск С(в данной папке должен быть наш sqlite3.exe)

В командной строке пишем: sqlite3.exe devlaz.db

где devlaz.db имя вашей базы данных.

Должно появится окно приветствия:

SQLite version 3.12.2 2016-04-18 17:30:31
Enter «.help» for usage hints.

Создаем внутри таблицу с именем например devlaz, в которой будет 3 поля: Порядковый номер, ФИО и Телефон: create table devlaz(id integer primary key, fio string, tel string);

Данные в таблицу мы будем добавлять из программы поэтому завершим работу с sqlite3.exe вводом команды: .exit

cmd

В той же папке с программой sqlite3.exe должен появится наш файл db, закидываем его в папку с проектом.

Теперь перейдем к созданию приложения. Готовое приложение вы сможете скачать в конце статьи.

Для начала добавьте на форму компоненты TSQLite3DataSet с вкладки Data Access, TSQLite3Connection, TSQLQuery и TSQLTransaction с вкладки SQLdb. А для отображения данных нашей базы я добавил на форму DBGrid и TDataSource.

Теперь для того чтобы наша база загружалась с запуском программы, на FormCreate добавим следующий код:

procedure TForm1.FormCreate(Sender: TObject);
begin
  {Параметры компонентов работы с базой
  Можно выставить в опциях у каждого компонента.}
  //*******************************
  SQLite3Dataset.FileName:='devlaz.db';
  SQLite3Dataset.TableName:='devlaz';
  DataSource.DataSet:=SQLite3Dataset;
  SQLite3Connection.DatabaseName:='devlaz.db';
  SQLite3Connection.Transaction:=SQLTransaction;
  SQLTransaction.DataBase:=SQLite3Connection;
  SQLQuery.DataBase:=SQLite3Connection;
  SQLQuery.Transaction:=SQLTransaction;
  //*******************************

  try
     SQLite3Dataset.Open;
     SQLite3Connection.Connected:=True;
  except
     On E:Exception do
        ShowMessage('Ошибка открытия базы: '+ E.Message);
  end;
end;

Создадим на форме 2-ве кнопки, для добавления новой записи и удаления. А также 3-и Edit’a для наших данных ID, ФИО и Тел.

Для создания новой записи впишем след. код:

procedure TForm1.ButtonAddClick(Sender: TObject);
begin
  SQLite3Dataset.Close;

  with SQLQuery do
  begin
    SQL.Clear;
    SQL.Add('INSERT INTO devlaz(fio, tel) VALUES(:FIO,:TEL)');
    ParamByName('FIO').Text:=EditFIO.Text;
    ParamByName('TEL').Text:=EditTEL.Text;
    ExecSQL;
    SQLTransaction.Commit;
    Close;
  end;

  SQLite3Dataset.Open;
end;

Поле id добавится автоматически, согласно след. порядковому номеру, поэтому его мы не указываем в запросе.

Для удаления записи будем использовать ID записи:

procedure TForm1.ButtonDelClick(Sender: TObject);
begin
  SQLite3Dataset.Close;

  with SQLQuery do
  begin
    SQL.Clear;
    SQL.Add('DELETE FROM devlaz where id=:ID');
    ParamByName('ID').Text:=EditID.Text;
    ExecSQL;
    SQLTransaction.Commit;
    Close;
  end;

  SQLite3Dataset.Open;
end;

Вы можете откорректировать ваш SQL запрос на свое усмотрение, например удаление по ФИО или номеру телефона.

Ну и напоследок представим ситуацию что нам нужно найти определенную запись по какому-то критерию, допустим это будем ID, после чего вывести фамилию по этой записи как сообщение. Для этого добавим еще одну кнопку и назначим ей след. код:

procedure TForm1.ButtonFindClick(Sender: TObject);
begin
  with SQLQuery do
  begin
    SQL.Clear;
    SQL.Add('SELECT * FROM devlaz where id = :id');
    ParamByName('id').Text:=EditID.Text;
    Open;
  end;

  ShowMessage(SQLQuery.FieldByName('fio').AsString);
  SQLQuery.Close;
end;

Вот мы и познали азы работы с SQLite.  Скачать готовый проект

main

Понравилась статья? Поделить с друзьями:
  • Lego batman ошибка
  • Lazarus ошибка fpc cfg отсутствует
  • Lazarus все ошибки
  • Lazarus try except текст ошибки
  • Left 4 dead 2 ошибка при установке