Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: OCCI  (Прочитано 19238 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« : 13-10-2008 09:28 » 

Всем привет, кто тут силен в Oracle C++ Call Interface? Улыбаюсь

Код:
		Environment* env = Environment::createEnvironment(Environment::OBJECT);
Connection* conn = env->createConnection(db_user_name, db_password, db_conn_str);
Statement* stmt;
ResultSet* rs;
char* buff = new char[1024];

            stmt = conn->createStatement(query.c_str());
            rs = stmt->executeQuery();

            do
            {
                Stream *stream = rs->getStream(1);
                stream->readBuffer(buff, 1024);
                cout << "ok" << endl;
                cout << buff << endl;
                rs->closeStream(stream);

            }while(rs->next());

        stmt->closeResultSet(rs);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);

на выходе получаю:

Цитата
ok
��϶
ok
��϶
а вот еще код:

Код:
Environment* env = Environment::createEnvironment(Environment::OBJECT);
Connection* conn = env->createConnection(db_user_name, db_password, db_conn_str);
Statement* stmt;
ResultSet* rs;
char* buff = new char[1024];

            stmt = conn->createStatement(query.c_str());
            rs = stmt->executeQuery();

            while(rs->next())
            {
                int a = rs->getInt(1);
                string b = rs->getString(6);

                cout << a << endl;
                cout << b << endl;
            }

        stmt->closeResultSet(rs);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);

на выходе получаю:

Цитата
1
manager
т.е. какие поля заказывал те и получил. Смысл в том что не могу никак догнать как мне получать значения и поля таблиц не зная их структуры, вот и пытался выше через поток, но как-то коряво, кто что может посоветовать?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #1 : 13-10-2008 13:36 » 

так, примерно должно вот так это выглядеть:

Код:
            while(rs->next())
            {
                for(int i=0; i < 12; i++)
                {
                    char* buff;
                    Stream *stream = rs->getStream(i);
                    stream->readBuffer(buff, 80);
                    cout << buff << endl;
                    rs->closeStream(stream);
                }
            }

12 соответственно потом изменю, пока для отладки на одной таблице сойдет. Проблема теперь в выводе на экран, выглядит пока что вот так:

Цитата












Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #2 : 13-10-2008 13:42 » 

Хотя вот так скорее будет правильнее:

Код:
char* buff = new char[1024];

while(rs->next())
            {
                for(int i=0; i < 12; i++)
                {
                    Stream *stream = rs->getStream(i);
                    stream->readBuffer(buff, 1024);
                    cout << buff[i] << endl;
                    rs->closeStream(stream);
                }
            }

Результат:

Цитата
`
a



1







Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 14-10-2008 07:25 » 

McZim,  а что должно было быть? Кодировки, может быть?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #4 : 14-10-2008 08:23 » 

должны быть вот такие значения:

Цитата
1          1                     1 sys                                                                                                                manager
test                                                                                                                                                       04-MAY-08

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

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 14-10-2008 16:08 » 

Цитата
Код:
cout << buff[i] << endl;

Ты выводишь один символ, а не строку. Сделай так:

Код:
cout << buff << endl;
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #6 : 14-10-2008 18:33 » 

делал, результат сообщу позже, когда вернусь на работу, но он не утишительный, по доке в i должна быть одна запись из таблицы, а не один символ.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #7 : 14-10-2008 20:04 » 

McZim, Мне просто интересно, как ты можеш вместить 1 запись из базы данных в переменную размером 1 байт. Или это новое слово в архивировании от Oracle  Здесь была моя ладья...
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #8 : 15-10-2008 06:34 » 

Код:
cout << buff << endl;

результат:

Цитата
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
�Б��\﷊Ỷ�3��`bжPbж�3��
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 15-10-2008 10:51 » new

McZim, локаль?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #10 : 15-10-2008 10:55 » 

RXL, в той же локали с sqlplus нормально все.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 15-10-2008 11:47 » 

Дока что говорит?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #12 : 15-10-2008 12:40 » 

про локаль ни слова Улыбаюсь
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 15-10-2008 13:40 » 

McZim, не - про объект Stream.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines