powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Embeded SQL и альтернативы
20 сообщений из 20, страница 1 из 1
Embeded SQL и альтернативы
    #33609778
Фотография T800
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, господа.
Объясните, плиз, на пальцах, технологию
обращения к БД приложения, написанного
с использованием сабжа. И, если получится,
зачем такой механизм вообще был придуман.

Также хотелось бы услышать альтернативные варианты обращения к БД (Oracle),
с учетом того, что обращаться должно приложение (С), работающее на той же
машине под Solaris.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33609852
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T800..альтернативные варианты обращения к БД (Oracle),
с учетом того, что обращаться должно приложение (С), работающее
на той же машине под Solaris.

Не совсем понятно, что имется в виду. Насколько я знаю, можно менять
тип драйвера (thin, oci) способ взаимодействия IPC, Socket, Secure
Socket и т.п.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33609903
Фотография T800
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оставляя за собой право сказать глупость:

Используешь - Embeded SQL, остается тайной за семью печатями,
какие конкретно функции драйвера БД используются
в том или ином случае.. И какого драйвера.

Читая мануал к Ораклу для девелоперов по OCI, получил
ссылки на библиотеки, которых нет там, где предлагается
их найти.. Имеющийся перед глазами проект использует
Embeded SQL, поэтому подсмотреть как надо негде.

Но по аналогии с тем, как это делается на JAVA под мастдаем,
должен быть похожий солюшн под С.

Но, думаю, что публике все равно до моих мучительных
поисков.. Поэтому просьба - в общих чертах
(т.е. неподробно) - Как выглядит работа с ORACLE для
C-прилижений из-под Solaris

Будьте здоровы.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33609960
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T800
Используешь - Embeded SQL, остается тайной за семью печатями,
какие конкретно функции драйвера БД используются
в том или ином случае.. И какого драйвера.


В термин Embeded SQL вкладывают разный смысл. Если он
Embeded, то куда? Я знаю о Embeded RDBMS - но это
другая история.

T800
Читая мануал к Ораклу для девелоперов по OCI, получил
ссылки на библиотеки, которых нет там


Соответствующие драйверы OCI входят в состав
Oracle Server. Качается бесплатно на www.oracle.com.
Возможно существует и отдельный пакет, но я
как-то не уделял этому особого внимания.

T800
Но по аналогии с тем, как это делается на JAVA под мастдаем,
должен быть похожий солюшн под С.


Так-же

T800
Но, думаю, что публике все равно до моих мучительных
поисков.. Поэтому просьба - в общих чертах
(т.е. неподробно) - Как выглядит работа с ORACLE для
C-прилижений из-под Solaris


Вопрос странен. Есть особенности установки и настройки
драйверов под Solaris. Но это нужно читать в мануале
к драйверу. Кстати ты до сих пор не сказал, какой у тебя
Солярис. SPARK? или x86?

Работа С-приложений выглядит точно так-же. Есть мелкие
различия, касаемые файловой системы и особенностей работы
с мультипоточностью, типов данных, директив препроцессора,
но в целом, протокол методов работы с OCI должен быть
одинаковым.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33610104
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T800Объясните, плиз, на пальцах, технологию
обращения к БД приложения, написанного
с использованием сабжа.

прям в сишном коде можешь пользоваться конструкциями сиквела. - препроцессор компилит в код. как правило используется в DB/2 для создания Stored Procedures.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33610366
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Технология такая. В коде на C (или C++) пишутся специальные ключевые слова, которые позволяют написать запрос, выполнить его и положить результаты запроса (колонки т.е.) в переменные С. ПРограмма, написаная таким образом, обрабатывается специальным препроцессором, который обычно преобразует эти ключевые слова в вызовы CLI API (call-level interface API типа ODBC, db-lib, ct-lib, oracle CLI API и т.п.), которые делают то что должны сделать соотв. операторы Embedded SQL. Потом такая программа компилируется и линкуется обычным способом и далее может работать.
Embedded SQL - потому что операторы SQL как бы встроены в программу на C.
Кажется есть даже стандарт на это дело, который определяет, как это должно выглядеть для всех СУБД.

На сколько я знаю, ESQL рассматривается всеми скорее как legacy API, т.е. как устаревшее, но с другой стороны его еще никто не отменял.

Оно хорошо тем, что позволяет выполнить запрос и получить результат не изучая сложные и запутанные CLI API. Т.е. позволяет сделать простые вещи просто. Но соответственно в этом его и минус.

Альтернативы - любой CLI API, или средства типа ADO.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33611835
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Embedded SQL - в разных СУБД к этому отношение совершенно разное. Лучшая реализация - в DB2. Оснавная связанная с ним фича - Static SQL.
В Db2 - это делается так:
создается файл *.sqx - который обрабатывается препроцессором, а в результате получается 2 файла - *.сxx (исходник на С++) и *.bnd (это типа байт-кода который должен быть встроен в базу данных при помощи операции bind) Если посмотреть на Sybase, MSSqls, Oracle и пр., то там в результате работы препроцессора получается только 1 файл, который затем нужно откомпилить. А в базе данных параллельно создается хранимая процедура специального типа. Кстати говоря, если вдруг задумаете писать на ESQL для MSSQL или SYBASE - то лучше не беритесь. Ничего кроме геморроя. Тем более что там о С++ и речи быть не может. Только чистый С. А если на DB2 или Оracle - то все будет выглядеть наоборот.

В DB2 после связывания пакета с базой данных может заодно сформироваться и план запроса. Поэтому всегда ясно что и как будет выполняться. Это основная причина почему DB2 так долго не собиралась реализовывать хранимые процедуры - потому, что нафиг не нужно было. Лично мне этот способ написания приложений для баз данных нравится больше всего.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33612749
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanЕсли посмотреть на Sybase, MSSqls, Oracle и пр., то там в результате работы препроцессора получается только 1 файл, который затем нужно откомпилить. А в базе данных параллельно создается хранимая процедура специального типа. Кстати говоря, если вдруг задумаете писать на ESQL для MSSQL или SYBASE - то лучше не беритесь. Ничего кроме геморроя. Тем более что там о С++ и речи быть не может. Только чистый С.Не понял, что за "паралелльно создающаяся хранимая процедура" Зачем она создается??? Ты ж клиента пишешь, какие такие хранимые процедуры?

А насчет писания на ESQL для Sybase - тут ты не прав на все 100%. Очень удобно и легко. Можешь писать как на C так и на C++. Прогоняешь исходник через препроцессор, компилируешь и все.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33612955
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНе понял, что за "паралелльно создающаяся хранимая процедура" Зачем она создается??? Ты ж клиента пишешь, какие такие хранимые процедуры?

дело в том что DB/2, Oracle - мульплатформенные, а в DB/2 до последнего времени спровождение SP требовало наличия доступного С компилятора на сервере. И с этим куча гемороя при компиляции SP при установке базы.

А если все в клиенте - тогда и делать ничего не надо.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33614235
Фотография T800
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<сиедено>
MasterZiv ПРограмма, написаная таким образом, обрабатывается специальным препроцессором, который обычно преобразует эти ключевые слова в вызовы CLI API
<сиедено опять>
MasterZiv
Альтернативы - любой CLI API, или средства типа ADO.

Вы практически поняли мой вопрос - синтаксис ESQL меня не интересует -
он перед глазами.. Важно, как в конечном счете рабает получившийся код.
Дергает ли он CLI API, или, как выразился коллега, создает хранимые процедуры
на сервере (эт че, статически что ли? 8О).. Короче, как это потом работает?

Да, ессно, пишется клиет, но он работает на одной машине с БД, я это отметил,
поскольку, возможно, из этого вытекают какие-то дополнительные возможности.

Спасибо.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33614585
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl gardenmanЕсли посмотреть на Sybase, MSSqls, Oracle и пр., то там в результате работы препроцессора получается только 1 файл, который затем нужно откомпилить. А в базе данных параллельно создается хранимая процедура специального типа. Кстати говоря, если вдруг задумаете писать на ESQL для MSSQL или SYBASE - то лучше не беритесь. Ничего кроме геморроя. Тем более что там о С++ и речи быть не может. Только чистый С.Не понял, что за "паралелльно создающаяся хранимая процедура" Зачем она создается??? Ты ж клиента пишешь, какие такие хранимые процедуры?

А насчет писания на ESQL для Sybase - тут ты не прав на все 100%. Очень удобно и легко. Можешь писать как на C так и на C++. Прогоняешь исходник через препроцессор, компилируешь и все.
Ну, если посмотреть Sybase ASE - то тут я прав на все 100+1%. А что касается ASA, то ... смысл Embedded SQL - уйти от динамического SQL. Не думаю что ASA справляется именно с этой задачей. Ведь смысл ESQL в том, что весь этот самый SQL уже откомпилированный лежит на сервере и приложение его только дергает. В противном случае в ESQL и смысла то нет.

2 White Owl - какие объекты создает ASA на сервере после обработки препроцессором? ASE - создает хранимую процедуру. (Сам писАл, знаю). DB2 - создает пакет SQL, который затем встраивается в базу данных. Что делает Oracle - не знаю.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33615277
Фотография T800
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanВедь смысл ESQL в том, что весь этот самый SQL уже откомпилированный лежит на сервере и приложение его только дергает. В противном случае в ESQL и смысла то нет.

Дык, он туда динамически кладется, или при проходе препроцессором?
Второе кажется очень маловероятным..

Але, человеки, кто-нить точно знает?
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33615552
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T800Важно, как в конечном счете рабает получившийся код.
Дергает ли он CLI API, или, как выразился коллега, создает хранимые процедуры
на сервере (эт че, статически что ли? 8О).. Короче, как это потом работает?


Работает он так же, как и через CLI API. Никаких дополнительных возможностей нет. А то, что пишет gardenman - скорее экзотическая особенность DB2.

Правда почти наверняка там можно (как и при использовании CLI API) сделать так называемый "подготовленный запрос" - prepared statement.
В таком случае в Sybase , MSSQLServer действительно создаются временные процедуры с планами при первом выполнениии. Но это - полумеры, гораздо лучше написать эту процедуру самому и вызывать уже ее с клиента.

Короче, мое мнение - ESQL нужно рассматривать только как средство написания клиента "для ленивых".
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33615556
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T800 gardenmanВедь смысл ESQL в том, что весь этот самый SQL уже откомпилированный лежит на сервере и приложение его только дергает. В противном случае в ESQL и смысла то нет.

Дык, он туда динамически кладется, или при проходе препроцессором?
Второе кажется очень маловероятным..

Але, человеки, кто-нить точно знает?

Еще раз, это -- специфика DB2. В других СУБД такого может не быть или быть что-то другое. В DB2 "он" (т.е. откомпилированный SQL) кладется "туда" (на сервер) в момент компиляции приложения (т.е. при обработке препроцессором), на сколько я знаю (но могу ошибаться). Ничего маловероятного здесь нет - IBM-ы -- они же хитрые, они же умнее всех !!!
Вот у них все не как у остальных людей.

В MSSQL, Sybase это делается при "подготовке" запроса - при первом его выполнении.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33615564
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman касается ASA, то ... смысл Embedded SQL - уйти от динамического SQL.

Смысл динамического SQL - только один - написать клиента просто и быстро.
Другие цели достигаются и без ESQL.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33616382
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если рассмотреть любой исходник любой софтины без микроскопа, то что мы увидим? Увидим кучу стрингов в которых "select ... from...where a=? and b=?..." и в добавок к этому кучу стрингов "call my_sp_xxxxxx(?,?,?..)". Причем второй способ -"call" более предпочительнее. Почему? потому что SP лежит на сервере уже откомпилированная. Но только вот тут возникает одна маленькая трудность. Сколько этих самых SP будет у вас лежать на сервере? Сколько сотен, тысяч? Вы будите в состоянии помнить все их названия? Вы уверены в том что когда вы создаете процедуру такую процедуру, которая выполняет то же самое не написал уже кто-то еще?... Вы можете выполнить не всю, а только чать процедуры? Вы делая CALL точно знаете что вы делаете, вы заглянули в исходник процедуры? Вы уверены в том, что какой-нить придурок потом вдруг не поменяет код процедуры и она у вас начнет работать совсем не так как вы хотели? Вы должны отдавать себе отчет что должны сопровождать вместо одного исходника - исходника программы, еще и SP на сервере. Вобщем я не против SP, но всякий подход сначала должен быть взвешен и оправдан.
Динамический SQL хорош в DWH и OLAP где трудно предугадать каков будет запрос. Т.е. он должен быть сформирован ДИНАМИЧЕСКИ во время исполнения.
А прикиньте такой случай - чувак открывает програмку в каком-нить бинарном редакторе, перебивает строку "select..." на "update..." и вы получаете проблемы по полной программе. Шутка...
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33617230
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanmy_sp_xxxxxx(?,?,?..)". Причем второй способ -"call" более предпочительнее. Почему? потому что SP лежит на сервере уже откомпилированная.

В контексте разговора о любой СУБД это утверждение неверно. Т.е. что оно "откомпилировано".

gardenman
Но только вот тут возникает одна маленькая трудность. Сколько этих самых SP будет у вас лежать на сервере? Сколько сотен, тысяч? Вы будите в состоянии помнить все их названия?


Ну пять тысяч. Ну и ? Да, буду.

gardenman
Вы уверены в том что когда вы создаете .... взвешен и оправдан.


Это к использованию ESQL не имеет никакого отношения.


gardenman
Динамический SQL хорош в DWH и OLAP где трудно предугадать каков будет запрос. Т.е. он должен быть сформирован ДИНАМИЧЕСКИ во время исполнения.
А прикиньте такой случай - чувак открывает програмку в каком-нить бинарном редакторе, перебивает строку "select..." на "update..." и вы получаете проблемы по полной программе. Шутка...

Да, кругом одни враги... а что делать ?
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33617454
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MasterZiv
Я - лентяй. Мне лень переключаться между системами разработки - типа SQL Advantage/ Visual Studio. Я предпочитаю чтобы исходник весь был перед глазами. Ну удобнее мне так. Да и ошибок меньше. Пока препроцессор не отработал - ничего не слинкуется. :))

А на самом деле - делайте так как хотите или так как умеете.
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33618209
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanА что касается ASA, то ... смысл Embedded SQL - уйти от динамического SQL.Ни в коем случае. В ASA ESQL это единственный способ использовать нативный клиентский драйвер dblib. Некоторые вещи (административного уровня, как например найти все сервера в сети) можно сделать только через dblib и соотвественно ESQL. Если же пишешь обычного клиента, а не утилиту управления серверами, то хватает стандартных интерфейсов типа ODBC/OLE DB/ADO.
Динамический SQL есть во всех типах интерфейсов.

gardenmanВедь смысл ESQL в том, что весь этот самый SQL уже откомпилированный лежит на сервере и приложение его только дергает. В противном случае в ESQL и смысла то нет.Ни в коем случае. "Откомпилированный и на сервере" это хранимые процедуры или юзерские расширения во внешних dll. К ESQL это отношения не имеет.

gardenman2 White Owl - какие объекты создает ASA на сервере после обработки препроцессором?Никаких совершенно. ESQL для ASA это чисто клиентский интерфейс. Кстати, очень похожий по структуре на ODBC. Все что можно сделать с ODBC можно сделать и с ESQL. Ну и как я уже говорил ESQL позволяет делать некоторые чисто административные функции которые в обычном клиенте нафиг не нужны.

gardenmanASE - создает хранимую процедуру. (Сам писАл, знаю). DB2 - создает пакет SQL, который затем встраивается в базу данных. Что делает Oracle - не знаю.Под ASE не писал. Может там и есть такая фигня. MasterZiv, ау! Скажи свое веское слово.
С DB2 сложнее - ESQL для него не просто клиентский интерфейс .
...
Рейтинг: 0 / 0
Embeded SQL и альтернативы
    #33618228
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanЯ - лентяй. Мне лень переключаться между системами разработки - типа SQL Advantage/ Visual Studio. Я предпочитаю чтобы исходник весь был перед глазами. Ну удобнее мне так. Да и ошибок меньше.А ты не переключайся.
Вот у меня вся разработка в FAR ведется. Самая лучшая среда для разработки :)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Embeded SQL и альтернативы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]