oracle :: occi :: ResultSet :: next()崩溃了我的程序

时间:2012-05-29 16:42:37

标签: c++ oracle occi

我有一个在Windows 7上运行的64位C ++服务器应用程序,当它在数据库上执行select并在结果集上调用next()时,该过程简单地死亡,没有异常,没有转储,并且在ResultSet之后没有调试信息 - >接着()。在数据库上写入没有问题,读取和写入都适用于32位版本

我正在使用即时客户端和SDK附带的win64 oracle库的11.2版本

编辑:这是最简单的代码

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只是DB驱动程序常用功能的接口,例如next,getField,它在这里实现

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

其中m_pResultSet是oracle :: occi :: ResultSet *

2 个答案:

答案 0 :(得分:0)

我不熟悉Oracle API,但问题是m_pResultSet是否为NULL(如果出现分段错误)且没有异常(如果是abort(),则为raise()堆栈)。

BR!

答案 1 :(得分:0)

经过大量的尝试后,我的问题得到了解决。

我正在将我的调试程序链接到oraocci11.lib,因为我没有调试版本,我认为这并不重要。经过一些搜索,我发现了库的调试版本oraocci11d.lib,带有相应的dll,崩溃就消失了