OberonCore https://forum.oberoncore.ru/ |
|
Fib - драйвер для Firebird https://forum.oberoncore.ru/viewtopic.php?f=90&t=1648 |
Страница 1 из 3 |
Автор: | Штирлиц [ Понедельник, 08 Июнь, 2009 10:32 ] |
Заголовок сообщения: | Fib - драйвер для Firebird |
Драйвер для Firebird Пример id = "lc_ctype=WIN1251;user_name=SYSDBA;password=masterkey" в SqlDB.OpenDatabase(protocol, id, password, datasource, SqlDB.sync, SqlDB.showErrors, db, res); password - игнорируется, задается в id. Работа с ARRAY Firebird пока не реализована. [Модератор] c 22.10.2010 размещён: http://oberoncore.ru/bbcc/subs/fib/ |
Автор: | GlSal [ Понедельник, 01 Февраль, 2010 20:17 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Что-то не работает INSERT. Trap выдает. Это для каких версий FB и BB? |
Автор: | Штирлиц [ Вторник, 02 Февраль, 2010 07:21 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Архив обновлен. |
Автор: | GlSal [ Вторник, 02 Февраль, 2010 08:04 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Спасибо! Помогло. |
Автор: | GlSal [ Понедельник, 22 Февраль, 2010 08:16 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
При выполнении следующего кода: Код: (************* SET SQL DIALECT 3; SET NAMES WIN1251; SET CLIENTLIB 'C:\WINDOWS\system32\FBCLIENT.DLL'; CREATE DATABASE 'D:\t.fdb' USER 'SYSDBA' PASSWORD 'masterkey' PAGE_SIZE 16384 DEFAULT CHARACTER SET WIN1251; CREATE TABLE T ( F INTEGER ); ***************) MODULE DbtstT; IMPORT Log := StdLog, SqlDB, FibDriver, Strings; CONST protocol = "FibDriver"; id = "lc_ctype=WIN1251;user_name=SYSDBA;password=masterkey"; password = "masterkey"; datasource = "D:\T.FDB"; PROCEDURE Tst*; VAR db: SqlDB.Database; res, i: INTEGER; si: ARRAY 10 OF CHAR; BEGIN SqlDB.OpenDatabase(protocol, id, password, datasource, SqlDB.sync, SqlDB.showErrors, db, res); IF res = 0 THEN Log.String('Open Base'); ELSE Log.String('Error open Base = '); Log.Int(res); RETURN ; END; FOR i := 1 TO 50000 DO Strings.IntToString(i, si); db.Exec("INSERT INTO T (F) VALUES (" + si + ") "); END; END Tst; END DbtstT. сервер (FB 2.1) съедает 2500 МБ памяти и начинает выдавать ошибку: Цитата: FibDriver# Error:Unsuccessful execution caused by an unavailable resource. 0AX unable to allocate memory from operating system Пробывал на разных компьютерах -- от физической памяти не зависит. А мне бы вообще надо 2000000 записей добавить. |
Автор: | Илья Ермаков [ Понедельник, 22 Февраль, 2010 14:36 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Может, там транзакция открыта во время всего добавления? А надо коммитить эти INSERT-ы, чтоб не ели память? |
Автор: | Axcel [ Понедельник, 22 Февраль, 2010 15:06 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Может попробовать ту же процедуру, через соединение по ODBC, чтоб проверить? |
Автор: | GlSal [ Понедельник, 22 Февраль, 2010 16:11 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Код: Strings.IntToString(i, si); db.Exec("INSERT INTO T (F) VALUES (" + si + ") "); db.Commit; и Код: Strings.IntToString(i, si); db.Exec("INSERT INTO T (F) VALUES (" + si + ") "); db.Exec("COMMIT RETAIN"); то же самое Код: Strings.IntToString(i, si); db.Exec("INSERT INTO T (F) VALUES (" + si + ") "); db.Exec("COMMIT"); то же, но медленнее |
Автор: | Штирлиц [ Четверг, 25 Февраль, 2010 08:39 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Архив обновлен. 25.02.2010 db.Commit; можно не делать по умолчанию драйвер открывается с автокоммитом |
Автор: | nail_kh [ Вторник, 10 Август, 2010 20:28 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Процедура FibDriver.Table.ReadName при попытке прочесть заголовки колонок выдает ошибку index out of range на строке Код: ... xsqlvar := S.VAL(FibApi.PtrXSQLVAR, S.ADR(xsqlda.sqlvar[column])); ... Причина похоже в том, что в типе FibApi.XSQLDA поле sqlvar определено как ARRAY [untagged] 1 OF FibApi.XSQLVAR Соответственно при column>0 срабатывает проверка выхода индекса за границы массива. Фрагмент кода выдающего ошибку: Код: PROCEDURE Tst*;
VAR db: SqlDB.Database; res, i,n: INTEGER; si: ARRAY 10 OF CHAR; tb:SqlDB.Table; r:SqlDB.Row; BEGIN SqlDB.OpenDatabase(protocol, id, password, datasource, SqlDB.sync, SqlDB.showErrors, db, res); IF res = 0 THEN Log.String('Open Base'); ELSE Log.String('Error open Base = '); Log.Int(res); RETURN ; END; tb:=db.NewTable(); tb.Exec("SELECT * FROM COUNTRY"); tb.Read(SqlDB.names,r); FOR n:=0 TO LEN(r.fields)-1 DO Log.String(r.fields[n]); Log.String(" ") END; Log.Ln; END Tst; |
Автор: | Штирлиц [ Среда, 11 Август, 2010 04:53 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Поправил. Обновлен архив 11.08.2010 [Модератор] с 22.10.2010 размещён: http://oberoncore.ru/bbcc/subs/fib/ |
Автор: | nail_kh [ Пятница, 13 Август, 2010 01:39 ] |
Заголовок сообщения: | Re: Драйвер для Firebird |
Спасибо! Работает замечательно! |
Автор: | Пётр Кушнир [ Пятница, 01 Апрель, 2011 18:54 ] |
Заголовок сообщения: | Re: Fib - драйвер для Firebird |
Такой вопрос: этот драйвер подходит для встраиваемой версии FB? Ну и, кто имел опыт демо-использования - просьба поделиться этим самым опытом. |
Автор: | Пётр Кушнир [ Суббота, 02 Апрель, 2011 12:45 ] |
Заголовок сообщения: | Re: Fib - драйвер для Firebird |
для работы embed версии, выложенной на сайте FB и ради сохранения оригинального драйвера, пришлось fbembed.dll переименовать в fbclient.dll тестовый пример вроде отработал |
Автор: | Иван Кузьмицкий [ Суббота, 02 Апрель, 2011 14:46 ] |
Заголовок сообщения: | Re: Fib - драйвер для Firebird |
Что-то драйвер трапает при чтении 1000-й строки из тестовой таблицы с 2000 строками. Причём, table.rows показывает 2000 строк. Меньше 1000 - читает нормально. Больше - нет. Цитата: index out of range
FibDriver.Table.Fetch [00002CDDH] .i INTEGER 1000 .res INTEGER 0 .row INTEGER 1000 .t FibDriver.Table [015D4990H] .xsqlda POINTER [017C9CB0H] |
Автор: | Штирлиц [ Суббота, 02 Апрель, 2011 22:35 ] |
Заголовок сообщения: | Re: Fib - драйвер для Firebird |
Возьмите Fib из SVN |
Автор: | Пётр Кушнир [ Воскресенье, 03 Апрель, 2011 10:08 ] |
Заголовок сообщения: | Re: Fib - драйвер для Firebird |
она оттуда и есть, а, там уже обновлённое! Спс. |
Автор: | Kubanych [ Вторник, 01 Ноябрь, 2011 13:53 ] |
Заголовок сообщения: | Re: Fib - драйвер для Firebird |
Здравствуйте. Никто не пробовал использовать этот драйвер в Linux? С уважением, Кубаныч. |
Автор: | Kubanych [ Среда, 02 Ноябрь, 2011 10:39 ] |
Заголовок сообщения: | Re: Fib - драйвер для Firebird |
Попробовал пример начать переделывать под Linux. Код: (************* SET SQL DIALECT 3; SET NAMES WIN1251; CREATE DATABASE '/home/bbweb/T.FDB' USER 'SYSDBA' PASSWORD 'masterkey' PAGE_SIZE 16384 DEFAULT CHARACTER SET WIN1251; CREATE TABLE T ( F INTEGER ); ***************) MODULE DbtstT; IMPORT Log, LinSimpleLog, SqlDB, FibDriver, Strings; CONST protocol = "FibDriver"; id = "lc_ctype=WIN1251;user_name=SYSDBA;password=masterkey"; password = "masterkey"; datasource = "/home/bbweb/T.FDB"; PROCEDURE Test*; VAR db: SqlDB.Database; res, i: INTEGER; si: ARRAY 10 OF CHAR; BEGIN SqlDB.OpenDatabase(protocol, id, password, datasource, SqlDB.sync, SqlDB.showErrors, db, res); IF res = 0 THEN Log.String('Open Base'); ELSE Log.String('Error open Base = '); Log.Int(res); RETURN ; END; FOR i := 1 TO 50 DO Strings.IntToString(i, si); db.Exec("INSERT INTO T (F) VALUES (" + si + ") "); END; END Test; PROCEDURE Init*; BEGIN LinSimpleLog.Open; Test; END Init; END DbtstT. DbtstT.Test Линковка DevElfLinker.LinkDll libBBFB.so := Kernel+ Log Math Strings LinSimpleLog Dates Files Services Dialog Fonts Ports Stores Sequencers Models Meta Converters Views Controllers Properties Mechanisms Containers Printers Printing Documents Windows StdDialog StdApi StdCmds HostFiles HostRegistry HostFonts HostPorts OleData HostMechanisms HostWindows HostPrinters StdCFrames HostCFrames HostDialog HostClipboard HostCmds SqlDrivers SqlDB FibApi FibMisc FibErrors FibDriver DbtstT# В FibDriver заменил StdLog на Log. Надо будет, наверное, удалить из FibApi вызовы WinApi, переделав динамическую загрузку dll/.so на статическую с переключалкой в исходном коде для Win/Lin, чтобы получить межплатформенный вариант. Подключенные модули при линковке тянут за собой много других модулей, какие из них можно заменить для облегчения бинарника? Кроме того, линковка до конца не идет, выдается вообщение Kernel.mainWnd not found (imported from HostWindows) |
Автор: | Евгений Темиргалеев [ Среда, 02 Ноябрь, 2011 11:26 ] |
Заголовок сообщения: | Re: Разработка динамических сайтов в Blackbox |
Kubanych писал(а): Подключенные модули при линковке тянут за собой много других модулей, какие из них можно заменить для облегчения бинарника? Почему нет? Kernel линуховый, HostWindows виндовый.Кроме того, линковка до конца не идет, выдается вообщение Kernel.mainWnd not found (imported from HostWindows) Нужно доработать драйвер так, чтобы он не лез куда не надо. Исходя из здравого смысла, гуйно-завязанные части для его работы не нужны. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |