powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Окажите помощь. csdk c++.
6 сообщений из 6, страница 1 из 1
Окажите помощь. csdk c++.
    #33286291
deiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получить последний Serial, после инсерта или апдейта.
Запись заносится, но переменнаяс `sqlca.sqlerrd[1]` содержит ноль.
Где эту информацию смотреть? Не по глазам.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
#include <ctype.h>
#include <string.h>
#include <iostream.h>
#include <my/it.h>
#include <my/CallbackResult.h>
#include <stdlib.h>

int
main( int, char ** )
{
    char buffer[ 512 ];
    ITDBInfo dbinfo;
    if (getenv("DATABASE")!=NULL) dbinfo.SetDatabase(getenv("DATABASE"));
    else {cout << "Not set environment variable DATABASE.\n";exit( 1 );}

    ITConnection conn;
    conn.AddCallback( errorHandlerConnection, (void *)&cerr );
    conn.Open(dbinfo);

    ITQuery q( conn );
    q.AddCallback( errorHandlerQuery, (void *)&cerr );

    ITString query;
    query = "insert into defaults (var_name, bs_user, d_t) values ('variable', 8, CURRENT);";
    q.ExecForStatus(query);

    cout << sqlca.sqlerrd[ 1 ] << "\n";

    conn.Close();
    return  0 ;
}

bash$
informix@rubnov:~/utils/c++/src$ make
/usr/bin/gcc -g -DIT_DO_NOT_SIMULATE_BOOL -DIT_HAS_DISTINCT_LONG_DOUBLE -DIT_COMPILER_HAS_LONG_LONG -DIT_DLLIB -DMITRACE_OFF -Wno-deprecated -I/opt/csdk/incl/c++ -I/opt/csdk/incl/dmi -I/opt/csdk/incl -I/opt/csdk/incl/esql -c tstcursor.cpp
/usr/bin/gcc -g -DIT_DO_NOT_SIMULATE_BOOL -DIT_HAS_DISTINCT_LONG_DOUBLE -DIT_COMPILER_HAS_LONG_LONG -DIT_DLLIB -DMITRACE_OFF -Wno-deprecated -I/opt/csdk/incl/dmi -I/opt/csdk/incl -I/opt/csdk/incl/esql -o tstcursor tstcursor.o -L/opt/csdk/lib/c++ -lifc++ -L/opt/csdk/lib/dmi -lifdmi -L/opt/csdk/lib/esql -L/opt/csdk/lib -lifsql -lifasf -lifgen -lifos -lifgls -lifglx /opt/csdk/lib/esql/checkapi.o -lm -ldl -lcrypt -lnsl
informix@rubnov:~/utils/c++/src$ ./tstcursor
0

Нам нужен мир, желательно весь.
...
Рейтинг: 0 / 0
Окажите помощь. csdk c++.
    #33294125
Leonid Vorontsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я не ошибаюсь, надо выполнить что-то вроде:
SELECT DBINFO( 'sqlca.sqlerrd1' ) INTO :serVal FROM...
...
Рейтинг: 0 / 0
Окажите помощь. csdk c++.
    #33294752
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid VorontsovЕсли я не ошибаюсь, надо выполнить что-то вроде:
SELECT DBINFO( 'sqlca.sqlerrd1' ) INTO :serVal FROM...
Это лишняя операция. sqlca всегда возвращается в колбеке запроса.
...
Рейтинг: 0 / 0
Окажите помощь. csdk c++.
    #33297106
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
в переменную sqlca.sqlerrd[1] точнее
...
Рейтинг: 0 / 0
Окажите помощь. csdk c++.
    #33305780
deiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мдя, может кто ссылку кинет на доку csdk с++. Язык любой.
Я качнул pdf по csdk c ibm, но там по этой теме них. не нашел.
Может не по глазам.

Журавлев Денис
Это лишняя операция. sqlca всегда возвращается в колбеке запроса.


Не понял. Живая sqlca будет доступна только в колбеке?
Т.е.:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
CallbackResult.h    [----] 33 L:[  1+ 0   1/ 80] *(33  /1977b)= .  10 0x0A
----------------------------------------------------------------------
#ifndef _IT_CALLBACK_RESULT_MY_H_
#define _IT_CALLBACK_RESULT_MY_H_


#include <ctype.h>
#include <string.h>
#include <iostream.h>
#include <my/it.h>
#include <stdlib.h>

ITCallbackResult
errorHandlerQuery(const ITErrorManager &errorobject,
                 void *userdata,
                 long errorlevel)
{
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // вот это место
    cout << sqlca.sqlerrd[ 1 ] << "\n";
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    ITQuery *query=(ITQuery *) userdata;
    // Cast the user data into a stream

    if (errorobject.Error())
    {
      ITString str;
      str.Append("my_error_handler(Query): ").Append("\n");
      str.Append("SQLError: ").Append(errorobject.ErrorText()).Append("\n");
      str.Append(query->QueryText()).Append("\n").Append(query->Command()).Append("\n");
      cout << str.Data();

    }

    return IT_HANDLED;
}
 ... пошкипано ...
#endif

При нормальном выполнении запроса, т.е. инсерт прошел, запись занеслась - колбэк не вызывается.

Есть подозрение, что где то надо выставить уровень сообщений.
Но это мои домыслы, ничем не подкреплённые.

Нам нужен мир, желательно весь.
...
Рейтинг: 0 / 0
Окажите помощь. csdk c++.
    #33305955
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deiv
Не понял. Живая sqlca будет доступна только в колбеке?

Мы говорим о разном, объяснять долго. Я не компетентен в вопросах csdk c++. И вообще не представляю зачем он нужен.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Окажите помощь. csdk c++.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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