|
|
|
commit
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. На выходных написал программку для обновления таблички из текстового файла на с++ через ib api. Селекты делаются нормально, но как только пытаюсь удалить(или вставить) данные, программа подвисает на операции: isc_commit_transaction транзакция создается так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. коммит делается так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. есть идеи? причем программа один раз отработала на ура. затем я сделал кое-какие косметические изменения(не помню какие, вроде бы не важные) и все. работать перестала. те же операции но через программу написанную на делфи происходят влет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 07:37 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
да, еще. транзакция по умолчанию: Код: plaintext 1. ничего не меняет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 07:38 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
Может deadlock -и? Попробуй commit перед запросом и commit после запроса. p.s. Я почти не использую isc_commit_transaction, просто выполняю runQuery("commit"); - пока срабатывало как надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 09:54 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
дело вот как обстоит, довольно любопытно. если я исполняю запрос, который не возвращает набор данных (insert, delete etc) а затем пытаюсь сделать isc_dsql_fetch() то ошибок я не получаю, зато при попытке удаления statment handle isc_dsql_free_statement( status, &fHandle, DSQL_drop ); приложение подвисает на неопределенное время. вот такая фишка. думаю нужно определять тип запроса при помощи isc_dsql_sql_info ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2004, 22:52 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
alex_k дело вот как обстоит, довольно любопытно. если я исполняю запрос, который не возвращает набор данных (insert, delete etc) а затем пытаюсь сделать isc_dsql_fetch() то ошибок я не получаю, зато при попытке удаления statment handle isc_dsql_free_statement( status, &fHandle, DSQL_drop ); приложение подвисает на неопределенное время. вот такая фишка. думаю нужно определять тип запроса при помощи isc_dsql_sql_info Знаешь, я б тебе посоветовал изучить содержимое файла examples/apifull.c. Я свои классы начал писать только после внимательного изучения примеров( судя по твоему вопросу ты туда даже не заглядывал или заглядывал мельком), постовляемых с FB (точнее IB 6.0) + API guidе И у меня пока (тьфу, тьфу,тьфу) еще не было серьезных проблем. Правда для FB 1.5 надо кое-что подправить. Для Linux: 1) Заменить Код: plaintext 1. 2. 3. 4. на Код: plaintext 1. 2. 3. 4. И компилировать так: gcc -o apifull apifull.c -lfbclient -lcrypt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2004, 07:04 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
спасибо за подсказку, почитал, подумал. теперь у меня работают инсерты, селекты и прочее. по идее хранимые процедуры тоже должны работать, он не проверял. работает почти все, кто заинтересован в посмотрении, обращайтесь в мыло: alex_k at trk7 dot ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 22:47 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. С String (AnsiString) .c_str() не есть гуд. Сам накалывался на этих прЫколах: Код: plaintext 1. 2. 3. 4. 5. 6. Внимание - вопрс: чему теперь равняется a? 100% гарантию дает старый добрый массив. _________________ "Hello, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 10:45 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
внимание вопрос. причем сдесь AnsiString? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 10:59 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
Со string не работал - врать не буду. Просто предположил, что м.б. имеет место указанный глюк. _________________ "Hello, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 12:21 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
на характер проверил Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. теже яйца, только в профиль... _________________ "Hello, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 12:29 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
ладно, поверю тебе не проверяя. и что делать? посыпать голову пеплом? пусть пока так будет, появится более лучший вариант, переделаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 12:37 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
Зачем пеплом-то? Я просто выделяю массив char'ов. Потом туда strcpy то что нужно... Далее действуем по правилу великого чешского ученого Буравчика _________________ "Hello, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 12:58 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
2alex_k >по идее хранимые процедуры тоже должны работать, он не проверял. Select сработает однозначно, а вот для execute procedure надо немного по другому. Я сделал так: if (statement_type==isc_info_sql_stmt_exec_procedure) isc_dsql_execute2(status, &trans, &stmt, SQL_DIALECT_V6, NULL,sqlda); (statement_type получено ранее с помощью isc_dsql_sql_info) Если все нормально, то структура sqlda содержит значения полей, возвращаемые execute procedure Если ты сделал на основе apifull, то есть там еще один подводный камень: Размер всех данных возвращаемых isc_dsql_fetch не должен превышать 1024 байт, поскольку там используется довольно оригинальный метод выделения памяти под sqldata: вместо более простого malloc/free для каждого sqldata, там используется один общий buffer[1024] . Поэтому если использовать данный метод, то, мне кажется, лучше определить динамический массив и в случае необходимости делать realloc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2004, 09:26 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
2somebody может стоит опубликовать исходники? обсудим, что к чему, может кому пригодится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2004, 22:44 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
2alex_k >может стоит опубликовать исходники? >обсудим, что к чему, может кому пригодится... Прошу прощения за долгое молчание - киндеры мои приболели, не до инета было. Насчет исходников - если есть где опубликовать или просто интересно взглянуть - вышлю, мне не жалко. А вот обсуждать не знаю чего. Для меня это уже давно пройденный этап. Да и IB/FB это у меня как дополнительная нагрузка + кормушка, а так специализация у меня несколько другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 23:09 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
2alex_k Сырцы здесь Проверялось только для Линукс. Ссылка активна максимум 2 недели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 22:41 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
посмотрел, спасибо. можно я твой trim дюзну? ну и вообще :-) по желанию если что понравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 23:11 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
alex_k можно я твой trim дюзну? ну и вообще :-) по желанию если что понравится? Так для того и выложил, чтобы "дюзал" все что понравится А trim там случайно оказался - забыл убрать, когда вставлял фрагмент из другой проги. Ну и есть там кое-какие баги/полубаги(мне пока жить не мешают) - если нужно, могу список набросать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 09:33 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
список не надо, я простым копированием не занимаюсь. пока не пойму, использовать не буду, но вообще интересно, щас во всю пересматриваю свой код :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 23:57 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
Ну удачи тебе. Сам свои сырцы выкладывать бушь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 07:40 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
позже :-) когда буду хоть чуть-чуть доволен результатами. у меня оказывается совсем нет параметров :-) как без них выкладывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 07:56 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
очень долго думал зачем менять Код: plaintext 1. 2. 3. 4. на Код: plaintext 1. 2. 3. 4. в линуксе так и не понял... у меня нормально работает и под виндой vc6 и под фришкой gcc 2.95 без этих изменений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2004, 15:00 |
|
||
|
commit
|
|||
|---|---|---|---|
|
#18+
2alex_k Для начала уточни что у именно тебя работает Я имел ввиду только apifull.c из примеров и не работоспособность, а возможность компиляции. Так вот, apifull.c без этих изменений компилиться не должен в принципе. Данная структура vary нужна для работы с varchar-ами . С FB 1.5 эта структура определена в ibase.h и поскольку она также определена в apifull.c то имеем "redefinition of `struct vary'" . В принципе можно было заменить на typedef struct vary VARY - просто я тогда поленился заглянуть в ibase.h и не знал, что в ibase.h и в apifull.c эта структура определена почти одинаково. Короче говоря, имелось ввиду то, что эти изменения нужны только для успешной компиляции apifull.c (чтобы избежать ошибки redefinition of `struct vary'). Прошу прощения если это не было ясно сразу. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2004, 06:45 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32441289&tid=1578985]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 516ms |

| 0 / 0 |
