我需要在C ++的MS-SQL数据库上执行一个简单的查询(VC6,如果重要的话)。我知道数据库是开放的。我知道我的CRecordset有正确的成员数量和类型。我可以直接在数据库上成功执行查询。但是,当我尝试以编程方式执行相同的查询时,我得到“无效的描述符索引”。我尝试了各种各样的变体,简化了查询等等,但无济于事。任何人都可以建议我在这里做错了吗?有问题的代码(简化为编辑)如下:
CDatabase db;
db.OpenEx("DSN=NRSUP;Description=Test;APP=DbTest Application;WSID=RFLD-PUNDRWOOD;Trusted_Connection=Yes", CDatabase::noOdbcDialog | CDatabase::useCursorLib);
if(db.IsOpen())
{
//Subclassed from CRecordset
m_pDBRoRRecordSet = new CDBRoRRecordSet(&db));
CString query;
query.Format("SELECT idx FROM [dbo].[RoRRecordSet] WHERE Railroad = 'one' AND Subdivision = 'two' AND Track = 'three';");
TRY
{
m_pDBRoRRecordSet->Open(CRecordset::snapshot,query,CRecordset::readOnly | CRecordset::executeDirect); //Invalid descriptor index
}
CATCH
{
//invalid descriptor index
}
}