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

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

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

Сообщение shade » 07.01.2007 13:58:16

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

PS: Если у кого есть готовый модуль, будет интересно посмотреть.
PPS: Поддержка всяких там BDE, ADO, ODBC меня не интересует,
PPPS: В указанном архиве есть модуль для работы с MySQL, проблемы аналогичны + хотелось бы иметь более-менее совместимый интерфейс.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Sergei I. Gorelkin » 07.01.2007 16:52:29

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

Сообщение shade » 07.01.2007 18:03:34

Sergei I. Gorelkin писал(а):А чем не подходит та поддержка sqlite, которая есть в FCL?
Я пишу под Delphi.
Как модуль называться, где почитать описание?..
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Sergei I. Gorelkin » 07.01.2007 20:45:59

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

Сообщение shade » 07.01.2007 21:45:58

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:
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

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

Сообщение debi12345 » 08.01.2007 01:04:01

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

Есть предложение - доработать имеющиеся варианты ( FCL и/или ваш ) под интерфейс "TBufDataset/TSQLQuery SQLDB" (по аналогии с FPC-ыми FB & PostgreSQL ). Это чтобы выборка ( и обновление, и удаление) делались сугубо через SQL-запросы.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение shade » 08.01.2007 13:26:30

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

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

Сообщение bw » 08.01.2007 15:08:57

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

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

Сообщение shade » 23.01.2007 21:49:07

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

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

Сообщение shade » 24.01.2007 00:45:04

Решил проблему драконовским методом:
откомпилировал проект fpc -s sq_test.dpr
после чего в link.res добавил /lib/libdl.so.2 и запустил ./ppas.sh
Все слинковалось.
Но как решить данную проблему по человечески :?:
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Sergei I. Gorelkin » 24.01.2007 03:49:13

Линукс при запуске программ ищет библиотеки по путям, которые прописаны в файле /etc/ld.so.conf.
Чтобы не редактировать link.res, вроде бы можно использовать {$linklib dl} в исходнике и -Fl/lib в командной строке компилятора...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение shade » 24.01.2007 13:02:40

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

Хорошо, проверю..
Но странно, моя программа от dl не зависит, от нее зависит sqlite3. Такое поведение ld нормально? Или может нужно собрать sqlite3 из исходников (я устанавливал готовый бинарник).
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

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

Сообщение mistikon » 12.02.2013 08:11:39

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


Спасибо, за отличный исходник. Я было начал уже свой писать, но вовремя нашел Ваш! Респект.
mistikon
незнакомец
 
Сообщения: 1
Зарегистрирован: 12.02.2013 08:07:31


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru
cron