Модуль для SQLite в Pascal

Модератор: Модераторы

Ответить
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Модуль для SQLite в Pascal

Сообщение shade »

Не найдя ни одного нормального модуля для работы с SQLite(3) в Pascal, решил написать свой модуль. sqlite.h переписал на Pascal получился SQLite3.pas
Но голый API SQLite жутко неудобный, поэтому пишу свой модуль оболочку (в стиле ООП). Скачать можно тут: http://zolotov.h14.ru/download/SQLite.rar
Все кому интересно высказывайте мнения и предложения по поводу интерфейса, то, что есть сейчас мне не очень нравиться, как-то не очень удобно получается.

PS: Если у кого есть готовый модуль, будет интересно посмотреть.
PPS: Поддержка всяких там BDE, ADO, ODBC меня не интересует,
PPPS: В указанном архиве есть модуль для работы с MySQL, проблемы аналогичны + хотелось бы иметь более-менее совместимый интерфейс.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

А чем не подходит та поддержка sqlite, которая есть в FCL?
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Sergei I. Gorelkin писал(а):А чем не подходит та поддержка sqlite, которая есть в FCL?
Я пишу под Delphi.
Как модуль называться, где почитать описание?..
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

С описаниями, увы, как всегда... Возможно, что они и есть, но я о них не знаю.
Сами модули, относительно папки исходников FPC - это /packages/base/sqlite (голый API) и /fcl/db/sqlite (наследник TCustomConnection)
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Sergei I. Gorelkin писал(а):С описаниями, увы, как всегда... Возможно, что они и есть, но я о них не знаю.
Сами модули, относительно папки исходников FPC - это /packages/base/sqlite (голый API) и /fcl/db/sqlite (наследник TCustomConnection)

Просмотрел. Насколько я понял он он использует все тот же TDataSet и пр.
Для совместимости это конечно хорошо, а сама идея мне не нравиться. Трудно, конечно, объяснить почему, но некоторое отторжение есть.

Тем временем модуль был полностью переделан. Не идеал, но работать теперь будет удобнее.
Кому интересно качайте http://zolotov.h14.ru/download/sqlite_units.rar
Если кто найдет ошибки пишите сюда в форум.

Странно, в доках есть функция int sqlite3_clear_bindings(sqlite3_stmt*); а sqlite3.dll её не экспортирует :roll:
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

shade писал(а):Все кому интересно высказывайте мнения и предложения по поводу интерфейса, то, что есть сейчас мне не очень нравиться, как-то не очень удобно получается.

Есть предложение - доработать имеющиеся варианты ( FCL и/или ваш ) под интерфейс "TBufDataset/TSQLQuery SQLDB" (по аналогии с FPC-ыми FB & PostgreSQL ). Это чтобы выборка ( и обновление, и удаление) делались сугубо через SQL-запросы.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

debi12345 писал(а):Это чтобы выборка ( и обновление, и удаление) делались сугубо через SQL-запросы.

Так модуль и так работает через запросы, причем только через запросы.
Аватара пользователя
bw
постоялец
Сообщения: 359
Зарегистрирован: 01.12.2005 10:36:23
Откуда: Усть-Илимск
Контактная информация:

Сообщение bw »

Вот враперы - http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers.
Сейчас я их прокомментировать не могу, не занимался толком этим делом уже где-то год. Но, кажется, среди них я тоже ничего того что бы мне понравилось подобрать не смог. Так что твою инициативу я поддерживаю. В первой половине этого года мне опять может понадобиться Pascal и SQLite, так что обязательно взгяну на твою либу.

..bw
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Попробовал использовать модуль под Linux. Что-то пока не получается.
ld говорит что не может найти dlopen, dlclose и еще что-то с префиксом dl (забыл как назывется)
Что это за функции и в какой библиотеке они находятся?
У меня сложилось такое впечатление, что ld попытался слинковать статически или я ошибаюсь?

Куда нужно закинуть libsqlite3.so ? в /lib ? (раньше пол Linux не программировал). Можно ли ее просто хранить вместе с исполняемым файлом (хотя бы на этапе отладки)?
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Решил проблему драконовским методом:
откомпилировал проект fpc -s sq_test.dpr
после чего в link.res добавил /lib/libdl.so.2 и запустил ./ppas.sh
Все слинковалось.
Но как решить данную проблему по человечески :?:
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Линукс при запуске программ ищет библиотеки по путям, которые прописаны в файле /etc/ld.so.conf.
Чтобы не редактировать link.res, вроде бы можно использовать {$linklib dl} в исходнике и -Fl/lib в командной строке компилятора...
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Sergei I. Gorelkin писал(а):Чтобы не редактировать link.res, вроде бы можно использовать {$linklib dl}

Хорошо, проверю..
Но странно, моя программа от dl не зависит, от нее зависит sqlite3. Такое поведение ld нормально? Или может нужно собрать sqlite3 из исходников (я устанавливал готовый бинарник).
mistikon
незнакомец
Сообщения: 1
Зарегистрирован: 12.02.2013 08:07:31

Сообщение mistikon »

shade писал(а):Не найдя ни одного нормального модуля для работы с SQLite(3) в Pascal, решил написать свой модуль. sqlite.h переписал на Pascal получился SQLite3.pas
Но голый API SQLite жутко неудобный, поэтому пишу свой модуль оболочку (в стиле ООП). Скачать можно тут: http://zolotov.h14.ru/download/SQLite.rar


Спасибо, за отличный исходник. Я было начал уже свой писать, но вовремя нашел Ваш! Респект.
Ответить