Page 1 of 1

Альтернативы DatabaseLayer?

Posted: Thu Apr 19, 2012 2:54 am
by alex_rain
Есть ли альтернативы DatabaseLayer с поддержкой баз данных MySQL и MS SQL Server (ODBC или напрямую). Хотелось бы также полноценную поддержку хранимых процедур.

Code::Blocks svn 7789, wxPack 2.8.12.01, TDM MinGW GCC 4.4.1, DatabaseLayer 1.8

Re: Альтернативы DatabaseLayer?

Posted: Thu Apr 19, 2012 11:03 am
by borr_1
http://debea.net/trac/wiki/WxDba
полноценную поддержку хранимых процедур
это вообще что-то не понятное, какие-то проблемы с Execute ХП или SELECT FROM ХП?

Re: Альтернативы DatabaseLayer?

Posted: Thu Apr 19, 2012 12:47 pm
by Mojo
Для Firebird я использовал IBPP - http://www.ibpp.org/

Могу предположить, что для PostgreSQL и MySQL есть так же свои С++ клиентские-библиотеки

Re: Альтернативы DatabaseLayer?

Posted: Thu Apr 19, 2012 12:50 pm
by Mojo
Есть еще SOCI http://soci.sourceforge.net/ но этого фрукта я не использовал, поэтому не могу сказать, что он из себя представляет.

Re: Альтернативы DatabaseLayer?

Posted: Fri Apr 20, 2012 12:47 am
by alex_rain
это вообще что-то не понятное, какие-то проблемы с Execute ХП или SELECT FROM ХП?
Требуется поддержка параметров INPUT, OUTPUT и INPUT_OUTPUT.
Например SOCI, как я понял, не поддерживает ХП в ODBC (http://soci.sourceforge.net/doc/backends/index.html).
У DatabaseLayer вроде бы поддержка параметров ХП есть (по крайней мере в исходниках встречается SQLBindParameter). Правда пока не понял как использовать.

Code::Blocks svn 7932, wxPack 2.8.12.01, TDM MinGW GCC 4.4.1, DatabaseLayer 1.8

Re: Альтернативы DatabaseLayer?

Posted: Fri Apr 20, 2012 5:27 am
by borr_1
Ни одна либа отдельно параметры ХП не держит ей это не нужно ибо параметры к ХП задаются в самом запросе типа

EXECUTE MYSP (par1, par2) или EXECUTE PROCEDURE MYSP (par1, par2) - это если ничего не нужно возвращать из ХП
и
SELECT * FROM MYSP(par1, par2) - ели ХП что-то возвращает

Ты ж почему-то про параметры от SELECT не спрашиваешь.

В зависимости от SQL сервера синтаксис может меняться

Re: Альтернативы DatabaseLayer?

Posted: Fri Apr 20, 2012 6:22 am
by alex_rain
SELECT * FROM MYSP(par1, par2) - ели ХП что-то возвращает
Для MySQL это сработает, а для MS SQL нет.
Например в OTL можно работать непосредственно с параметрами (http://otl.sourceforge.net/otl3_ex24.htm).

Code::Blocks svn 7932, wxPack 2.8.12.01, TDM MinGW GCC 4.4.1, DatabaseLayer 1.8

Re: Альтернативы DatabaseLayer?

Posted: Fri Apr 20, 2012 6:33 am
by borr_1
А ты OPENROWSET и OPENQUERY для MS пробовал?

Code: Select all

 otl_stream o(1, // buffer size should be equal to 1 in case of stored procedure call
              "{call my_proc("
              " :A<int,inout>, "//запросы с  параметрами есть и в wxDbe и в databaselayer при чем тут ХП вообще
              " :B<char[31],out>, "
              " :C<char[31],in> "
              ")}",
                 // stored procedure call
              db // connect object
             );
Почему тогда не используешь OTL в связке с wx?

Re: Альтернативы DatabaseLayer?

Posted: Fri Apr 20, 2012 6:51 am
by alex_rain
А ты OPENROWSET и OPENQUERY для MS пробовал?
Не пробовал. Примером поделишься?

Code::Blocks svn 7932, wxPack 2.8.12.01, TDM MinGW GCC 4.4.1, DatabaseLayer 1.8

Re: Альтернативы DatabaseLayer?

Posted: Fri Apr 20, 2012 6:58 am
by borr_1

Code: Select all

SELECT  * 
INTO    #tmp FROM    
OPENQUERY(YOURSERVERNAME, 'EXEC MyProc @parameters')
 или
SELECT * FROM OPENROWSET('SQLNCLI', 'connection string', 'name of sp')
повторю
У тебя вопрос про параметризованный запрос или про ХП? Почему не используешь OTL?

Re: Альтернативы DatabaseLayer?

Posted: Fri Apr 20, 2012 7:22 am
by alex_rain
повторю
У тебя вопрос про параметризованный запрос или про ХП?
:mrgreen:
Для непонятливых:
Требуется поддержка параметров INPUT, OUTPUT и INPUT_OUTPUT.
Вопрос про использование входных, выходных, входных-выходных параметров ХП.
А за пример спасибо.
Почему не используешь OTL?
И правильно. Зачем тогда DatabaseLayer и wxDba, если можно юзать OTL.
И вдогонку: DatabaseLayer запрос через MySQL API выполняет в 2-5 раз медленнее, чем через ODBC (вроде должно быть наоборот).

Реальную альтернативу замороженному проекту нашли, можно тему закрывать.

Code::Blocks svn 7932, wxPack 2.8.12.01, TDM MinGW GCC 4.4.1