我有一个在 Windows 7 上运行的 64 位 C++ 服务器应用程序,当它在数据库上进行选择并在结果集上调用 next() 时,进程简单地死掉,在 ResultSet->next( )。数据库上的写入工作没有问题,读写都在 32 位版本上工作
我正在使用即时客户端和 SDK 附带的 11.2 版本的 win64 oracle 库
编辑:这是最简单的代码
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*