powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS VS 2015 и OCCI
13 сообщений из 13, страница 1 из 1
MS VS 2015 и OCCI
    #39398019
niksun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем!
Я хочу разобраться в программировании на С++. Текущий уровень: вторая неделя "Освой самостоятельно С++ за 21" =)
Стала передо мною задача: работать с DB Oracle используя С++. Без .Net, без сторонних библиотек.
Решил я работать через OCCI.
Установил MSVS 2015, нативный клиент оракла, либы OCCI (под VS2015 не оказалось, взял последние) под этот клиент.
Набрал код () из мана

Код: 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.
#include 
#include "occi.h"
#include <iostream>
#include <string>
#pragma comment (lib, "oraocci11.lib")  
using namespace std;
using namespace oracle::occi;
  
int main() {
	try {
		Environment* env = Environment::createEnvironment(Environment::DEFAULT);
		Connection* conn = env->createConnection("login", "pass", "alias");
		Statement* stmt = conn->createStatement("select id, full_addr  from person where rownum<=300");
		ResultSet *rs = stmt->executeQuery();
		while (rs->next()) {
			cout << rs->getInt(1) << '\t';
			cout << rs->getString(2) << endl; //VARCHAR2 (40)
		}
		stmt->closeResultSet(rs);
		env->terminateConnection(conn);
		Environment::terminateEnvironment(env);
	}
	catch (SQLException &sqlExcp){
		cerr << sqlExcp.getErrorCode() << " " << sqlExcp.getMessage() << endl;
	}			}
return 0;
  }



И посыпала ошибка при использовании rs->getString(2) . Код возвращает стрингу, а потом при выходе из метода getString () крашится в delete_scalar.cpp (ИМХО не может корректно освободить память под объект String выделенный в getString)
Выяснил, что если в SQL запросе сделать substr по полю не более чем на 15 символов то код отрабатывает.
Установил VС++ 2010 - код отработал без проблем по строкам любой длинны.
Соответственно вопросы:
1. Oracle более не поддерживает OCCI под MSVS 2015? Тогда подскажите через что лучше работать. Предпочтения к библиотекам которые можно статически залинковать.
2. Я что-то не то делаю? Укажите на ошибку.
Спасибо.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398039
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niksun,

OCCI -- это видимо Oracle CLI имеется в виду ?

У них есть библиотека что-то типа OracleCLI++, поищи, рекомендую работать через неё.
Но там всё достаточно сложно, их несколько (я забыл весь список), и API сложный, и надо
тщательно выбирать, что использовать, либо знать все тонкости.

Ну и если уровень "Я хочу разобраться в программировании на С++. Текущий уровень: вторая неделя "Освой самостоятельно С++ за 21" , то работать с базами данных вообще не нужно. Это очень сложно, и тебе ещё рано.

Попиши что-то другое, там на использование файлов, на STL, ещё что-то из стандартной библиотеки С++.
Будет гораздо полезнее.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398044
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niksunИ посыпала ошибка при использовании rs->getString(2) . Код возвращает стрингу, а потом при выходе из метода getString () крашится в delete_scalar.cpp (ИМХО не может корректно освободить память под объект String выделенный в getString)
Выяснил, что если в SQL запросе сделать substr по полю не более чем на 15 символов то код отрабатывает.


Установил VС++ 2010 - код отработал без проблем по строкам любой длинны.
Соответственно вопросы:
1. Oracle более не поддерживает OCCI под MSVS 2015? Тогда подскажите через что лучше работать. Предпочтения к библиотекам которые можно статически залинковать.
2. Я что-то не то делаю? Укажите на ошибку.
Спасибо.

Скорее всего, ты даже диагностируешь всё неверно. Т.е. ты что-то там думаешь, строишь гипотезы, но
всё совсем не так, и всё из-за другого, совсем по другой причине.
Поэтому не занимайся ерундой.

Ещё есть такая библиотека POCO, в её составе есть работа с базами данных, в частности, и работа с Oracle.
Рекомендую её.

Либо QT и его слой работы с БД, там тоже есть работа c Oracle, там всё совсем просто и примитивно, практически железобетонно, невозможно ошибиться.

Эту конкретно твою библиотеку лично я не знаю, но я знаю, что со всеми либами С++ для работы с Oracle куча проблем,
кроме выше мною перечисленных и ещё одной, но не помню, которой.
Извини, более детально помочь не смогу.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398054
niksun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,
Спасибо за совет. Подожду может кто-то работал с OCCI и подскажет.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398056
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niksunУстановил MSVS 2015, нативный клиент оракла, либы OCCI (под VS2015 не оказалось, взял последние) под этот клиент.
...
Установил VС++ 2010 - код отработал без проблем по строкам любой длинны.


Это может быть ещё из-за того, что эта библиотека OCCI и сам оракл instant client или OCI ( я не знаю, что ты используешь)
собраны с C Run Time Libs от VС++ 2010 , а не от MSVS 2015.

С чем оно собрано, надо тупо знать, и использовать только эту VC, или наоборот OCI и OCCI, собранные под эту версию VC.
Я ж говорю, что тебе туда соваться рано.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398057
niksun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
QT на будущее оставлю. Смотрел на нее как на основную. Особенно по GUI.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398060
niksun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЭто может быть ещё из-за того, что эта библиотека OCCI и сам оракл instant client или OCI ( я не знаю, что ты используешь)
собраны с C Run Time Libs от VС++ 2010 , а не от MSVS 2015.
Так и есть.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398061
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niksunMasterZiv,
Спасибо за совет. Подожду может кто-то работал с OCCI и подскажет.

Вряд ли, очень мало народу почему-то с ораклом из С++ работает,
а если и работает, то используют POCO либо QT, либо OCI напрямую в режиме C API.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398064
niksun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
niksun,
Вот я подумал если нет конкретной сборки под VS 2015 то или не поддерживается более, или сборка под VS2010 работает на VS 2015
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398240
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niksunniksun,
Вот я подумал если нет конкретной сборки под VS 2015 то или не поддерживается более, или сборка под VS2010 работает на VS 2015

Ты не безнадёжен
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39398262
niksun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivniksunniksun,
Вот я подумал если нет конкретной сборки под VS 2015 то или не поддерживается более, или сборка под VS2010 работает на VS 2015

Ты не безнадёжен
Ваша ирония меня обнадеживает
Но в этом и был один из вопросов. Изначально
niksun"под VS2015 не оказалось, взял последние"

niksun 1. Oracle более не поддерживает OCCI под MSVS 2015?
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39399005
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВряд ли, очень мало народу почему-то с ораклом из С++ работает,
а если и работает, то используют POCO либо QT, либо OCI напрямую в режиме C API.мы с ораклом через ADO работаем. В msdn-е по теме ADO куча всяких примеров. Раньше работали через OCI.
...
Рейтинг: 0 / 0
MS VS 2015 и OCCI
    #39399043
niksun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb,
Спасибо.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS VS 2015 и OCCI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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