Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Окажите помощь. csdk c++. / 6 сообщений из 6, страница 1 из 1
23.09.2005, 15:20
    #33286291
deiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окажите помощь. csdk c++.
Получить последний 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
28.09.2005, 17:59
    #33294125
Leonid Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окажите помощь. csdk c++.
Если я не ошибаюсь, надо выполнить что-то вроде:
SELECT DBINFO( 'sqlca.sqlerrd1' ) INTO :serVal FROM...
...
Рейтинг: 0 / 0
29.09.2005, 09:01
    #33294752
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окажите помощь. csdk c++.
Leonid VorontsovЕсли я не ошибаюсь, надо выполнить что-то вроде:
SELECT DBINFO( 'sqlca.sqlerrd1' ) INTO :serVal FROM...
Это лишняя операция. sqlca всегда возвращается в колбеке запроса.
...
Рейтинг: 0 / 0
29.09.2005, 21:25
    #33297106
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окажите помощь. csdk c++.
в переменную sqlca.sqlerrd[1] точнее
...
Рейтинг: 0 / 0
05.10.2005, 11:40
    #33305780
deiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окажите помощь. csdk c++.
мдя, может кто ссылку кинет на доку 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
05.10.2005, 12:18
    #33305955
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окажите помощь. csdk c++.
deiv
Не понял. Живая sqlca будет доступна только в колбеке?

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


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