好的,我正在与这个关于我多年未编写代码的库的问题约会我的工作......我有自 1990 年代后期以来一直在生产中的代码,这些代码使用 Roguewave 的 DBTools++ 用 Visual Studio 6.0 C++ 编写。
突然,对于特定情况,查询失败并且 RWDBStatus 指示错误代码 9,消息是 [ENDOFFETCH} End of Fetch。当我尝试使用适当的键运行下面的查询时,我收到了这个奇怪的错误。注意 - 我还将更改代码以更具体地说明哪个查询失败,尽管它似乎是第二个失败的查询,因为它只有在第一个查询返回一个值时才会执行......
所以,我的问题是——有谁知道在这种情况下“提取结束”是什么意思?它目前没有让我知道在哪里寻找这个......这是错误消息,代码如下......
06/04/2014 16:00:40 FindSignature() - failed to execute!
06/04/2014 16:00:40 ErrorCode = 9,ErrorMsg = [ENDOFFETCH] End of Fetch
06/04/2014 16:00:40 VendCode1 = 0,VendCode2 = 0
06/04/2014 16:00:40 VendMsg1 = ,VendMsg2 =
这是我的代码:
bool result = false;
RWDBTable tblRMSUsers = m_RMSDatabase.table( "RMSUsers" );
RWDBSelector selRecord = m_RMSDatabase.selector();
selRecord << tblRMSUsers["ExternalKey"];
selRecord.where( tblRMSUsers["InternalKey"] == lLinkToUser );
RWDBReader rdrRecord = selRecord.reader(theConnection);
if( rdrRecord() )
{
RWCString s;
rdrRecord >> s;
// Changed to use view_SwitchUsers2 which includes deleted / inactive users...
RWDBTable tblSwitchUsers = m_RMSDatabase.table( "view_SwitchUsers2" );
RWDBSelector selRecord = m_RMSDatabase.selector();
selRecord << tblSwitchUsers ["Signature"];
selRecord.where( tblSwitchUsers ["SID"] == s );
RWDBReader rdrRecord1 = selRecord.reader(theConnection);
if(rdrRecord1 ())
{
rdrRecord1 >> blob;
result = true;
}
else
{
RWDBStatus theStatus = rdrRecord1.status();
TraceStr("FindSignature() - failed to execute!");
TraceStr("ErrorCode = %d,ErrorMsg = %s ", theStatus.errorCode(), theStatus.message() );
TraceStr("VendCode1 = %d,VendCode2 = %d ", theStatus.vendorError1(), theStatus.vendorError2() );
TraceStr("VendMsg1 = %s,VendMsg2 = %s ", theStatus.vendorMessage1(), theStatus.vendorMessage2() );
return false;
}
}
任何见解表示赞赏!