【发布时间】:2012-05-29 16:42:37
【问题描述】:
我有一个在 Windows 7 上运行的 64 位 C++ 服务器应用程序,当它对数据库进行选择并在结果集上调用 next() 时,进程简单地死掉,没有异常,没有转储,也没有 ResultSet 之后的调试信息- >下一个()。写入数据库没有问题,读写都在 32 位版本上工作
我使用的是 11.2 版本的 win64 oracle 库,附带即时客户端和 SDK
编辑:这是最简单的代码
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*
【问题讨论】:
-
你能发布你的代码吗?