2012-05-29 3 views
0

У меня есть 64-разрядное серверное приложение на C++, работающее в Windows 7, и когда оно делает выбор в базе данных и вызывает next() в результирующем наборе, процесс просто умирает, никаких исключений, нет дампов и нет отладочной информации после ResultSet-> next(). Пишешь в базе данных работает без проблем и как читает и пишет работу на 32-разрядную версииoracle :: occi :: ResultSet :: next() сбой моей программы

Я использую версию 11.2 библиотек win64 оракула, который пришел с мгновенным клиентом и SDK

EDIT: это Простейшие кодов

const std::string sql("select * from schedule_import"); 

std::auto_ptr<IRecordSet> query = m_conn->Open(sql); 

while(query->Next()) // dies 
{ 
    const std::string key(query->GetField("bean_key")); 
    //... 

IRecordSet это просто интерфейс для общих функций БД драйверов, как следующие, ПолучитьПолеЗаголовок и он реализован здесь

bool OracleRecordSet::Next() 
{ 
    return m_pResultSet->next() != NULL; //crashes here 
} 

где m_pResultSet - оракул :: occi :: ResultSet *

+0

Можете ли вы разместить свой код, пожалуйста? – Nick

ответ

0

После многих попыток моя проблема решена.

Я связал свою программу отладки с oraocci11.lib, потому что у меня не было отладочной версии, и я думал, что это не имеет большого значения. После небольшого поиска я нашел отладочную версию библиотеки oraocci11d.lib с соответствующей dll, и авария исчезла

0

Я не являюсь членом Oracle API, но вопрос в том, что m_pResultSet не является NULL (в случае ошибки сегментации) и если нет исключения (в случае из abort(), рейза() стека).

BR!

Смежные вопросы