|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
Есть бд Indormix работающая на Windows Server 2000. Есть программа взаимодействующая с ней. Она делает обращения к бд используя библиотеку Isqlt09a.dll, вызывая функцию sqli_stmt. В заголовочном файле из SDK она объявляется так: Код: plaintext 1. 2. 3.
Собственно SQL запросы лежат в массиве указателей cmdtxt. И разумно пологать, что icnt - содержит количество этих запросов. Но как оказалось на практике, это не совсем так. Погуглив, я нашел следующие примеры вызовов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
и Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Возможно один из них не рабочий (второй). Короче требуется мануал на sqli_stmt или грамотный совет. Есть идея, что количество запросов определяется так: Код: plaintext 1. 2. 3. 4.
А icnt определяет количество элементов в ibind и т.п. аргументах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 14:04 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
а вы что хотите сделать-то в итоге? и на каком языке программирования? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 16:35 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
Язык C++ Хочу знать за что отвечает параметр icnt Я перехватываю вызов этой функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 16:57 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
Даже точнее, как наиболее грамотно извлекать текст запросов из cmdtxt? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 16:59 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
StKgnДаже точнее, как наиболее грамотно извлекать текст запросов из cmdtxt?типа пишете прокси длл для логирования запросов? Сниферить не проще? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 17:04 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
Журавлев ДенисStKgnДаже точнее, как наиболее грамотно извлекать текст запросов из cmdtxt?типа пишете прокси длл для логирования запросов? Сниферить не проще? Как "прокси длл", но не прокси длл, не суть. Лог естественно пишет. В любом случае надо знать апи перехватываемых функций. Снифферить не подумал ) .. это будет в крайнем случае. Снифферить не совсем хорошая идея, т.к. соединение Клиент-Сервер локальное (на одной машине), и на этот серв не очень хорошо до устанавливать что-либо он всё время включен и в работе, а сетевые снифферы до устанавливают свои дрова. Чтобы получить 1-2 запроса покупать сниффер влом, а крякнутый ставить боязно.. кейгены с вирями частенько. Кстати, а чем лучше снифферить SQL соединения??? Есть ли комманды/опции в Informix для включения записи лога запросов в версии под Windows ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 18:02 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
StKgn Кстати, а чем лучше снифферить SQL соединения??? покупать, шутка? Wireshark лучший и бесплатный. StKgn Есть ли комманды/опции в Informix для включения записи лога запросов в версии под Windows ?есть, версия инфромикса какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 19:38 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
StKgnЕсть программа взаимодействующая с ней. Она делает обращения к бд используя библиотеку Isqlt09a.dll, вызывая функцию sqli_stmt. Программа напрямую дёргает dll? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 19:42 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
StKgnЕсть ли комманды/опции в Informix для включения записи лога запросов в версии под Windows ? А в FAQ заглядывали ? Как сделать трассировку запросов к Informix ? http://www.sql.ru/faq/faq_topic.aspx?fid=2529 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 20:14 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
Сразу оговорюсь, что меня всё-же интересует доделать перехват который я делал. семикрылый дятелStKgn Кстати, а чем лучше снифферить SQL соединения??? покупать, шутка? Wireshark лучший и бесплатный. Спасибо, посмотрю. Но как я понимаю, конкретно лог SQL запросов от конкретного приложения программа не дает. Это будет дамп запросов на уровне TCP пакетов. Ведь так? семикрылый дятелStKgn [quot StKgn] Есть ли комманды/опции в Informix для включения записи лога запросов в версии под Windows ?есть, версия инфромикса какая? Вероятно версия 9.5 (это выдает зарос: select owner from informix.systables where tabname = ' VERSION' ) другого способа проверить версию не нашел. ------------------------- АнатоЛойStKgnЕсть программа взаимодействующая с ней. Она делает обращения к бд используя библиотеку Isqlt09a.dll, вызывая функцию sqli_stmt. Программа напрямую дёргает dll? Программа-клиент напрямую обращается к библиотеке (Isqlt09 a .dll) а та по локальному соединению общается с сервером. В принципе использование динамической библиотеки прямее быть не может, это клиент-серверная система. ODBC (Iсlit09 b .dll) не используется. ... я вот посмотрел, что использование ODBC, что использование обращений "на прямую в библиотеку" - разница в производительности минимальная. И одинаково догружаются библиотеки в процесс.. только это разные библиотеки и разные интерфейсы. А дальше они работают (за редким исключением) совсем одинаково подключаясь к информиксу и обмениваясь с ним данными. Это конечно другая тема.. Вполне вероятно, использование Isqlt09a.dll может быть производительнее ODBC, т.к. последний предоставляет общий интерфейс к БД, а Isqlt09a.dll - специфичный для БД. Т.е. например один вызов к sqli_stmt позволяет передать на сервер в БД сразу несколько запросов и наборы данных к ним. Что (как я пологаю) отсутствует в ODBC. ------------------------- vasilisStKgnЕсть ли комманды/опции в Informix для включения записи лога запросов в версии под Windows ? А в FAQ заглядывали ? Как сделать трассировку запросов к Informix ? http://www.sql.ru/faq/faq_topic.aspx?fid=2529 Именно в это FAQ не заглядывал. Спасибо, я посмотрю. -------------------------- Короче, всем спасибо! Более менее понял, что есть Informix и с чем его едят. Если у кого будут мысли по параметру icnt или функции sqli_stmt , пишите. P.S. Удивительно, есть программы которые используют только этот интерфейс (я о библиотеке Isqlt09a.dll) и в инете на него нет описаний. O_o Вот так IBM продвигает свою БД... Возможно она больше зарабатывает с продажи мануалов, чем с продажи самой БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2010, 01:29 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
IBM это слон и делает , что считает для себы нужным ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2010, 12:02 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
aist-pskIBM это слон и делает , что считает для себы нужным тьфу : для себы=для себя ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2010, 12:03 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
StKgnКороче требуется мануал на sqli_stmt или грамотный совет. Я не уверен, но похоже что информикс не может выполнить несколько запросов, за раз. Похоже что первым там всегда лежит указатель на строку запроса, а вторым null. icnt используется похоже по разному, в том числе и для количества биндов. StKgnУдивительно, есть программы которые используют только этот интерфейс (я о библиотеке Isqlt09a.dll) и в инете на него нет описаний. Видимо предполагалось что напрямую его использовать не будут, а будут например генерить сишный код прекомпилятором esqlc. Я тоже искал эту документацию 10 лет назад, никакого ibm тогда еще на горизонте не было. Хотел написать компонент с прямым доступом, не нашел. А потом, спасибо luxena, они сделали idac, может у них дока была, а может генерили esqlс и переписывали на паскале. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2010, 13:15 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
а для препареных запросов наверно и текст не передается, а только имя ifx_statement_t *scb ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2010, 13:37 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
и вообще sqli_stmt, это фиг знает что вообще такое, скорее типа выполнить запрос, не препареный, не возвращающий результата. берем: esqlc.exe demo2.ec смотрим: demo2.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2010, 14:01 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
Короче эта библиотека (Isqlt09a.dll) используется для трансляции с ESQL/C на си вставок из SQL. Поэтому она не документирована. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 00:59 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
продолжу... берем: esqlc.exe timeout.ec смотрим: timeout.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 11:00 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
и что? Я об этом уже сказал "скорее типа выполнить запрос, не препареный, не возвращающий результата" sqlcmdtxt[] = "drop table canceltst" sqli_stmt(ESQLINTVERSION, &_SQ0, sqlcmdtxt, Но на самом деле курсор оно вернуть может. Т.е. это функция для выполнения непрепареных запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 11:18 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
точнее массив из двух указателей: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 11:20 |
|
Indormix Isqlt09a.dll функция sqli_stmt
|
|||
---|---|---|---|
#18+
Выяснил следующее: SQL запрос для передачи на сервер ч/з функцию sqli_stmt (или аналогичных) дробится на строки длиной не более 512 байт, поэтому sqlcmdtxt объявляется как char**. Вероятно это надо было для борьбы с переполнением буффера... или хз. чем. А icnt это количество элементов в ibind. ibind хранит аргументы запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 17:31 |
|
|
start [/forum/topic.php?fid=44&msg=36670016&tid=1607559]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
6ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 337ms |
total: | 482ms |
0 / 0 |