sql server语言 - 从sql使用ODBC访问数据时出现问题



我使用MFC从使用ODBC的SQL数据源检索数据。
我在获取数据字段以外的"id"字段在表中的问题。
在后续的迭代中,发现varValue对于除"id"以外的字段为空。

请指导我访问表中的所有数据字段

Table data: 
     **id**(nchar)     name(varchar)     age(varchar)
0    **11**                 john            24
1    **22**                 troy            25
2    **33**                 bill            21

only ids are fetched.

    CDatabase db;
    db.OpenEx( NULL, CDatabase::forceOdbcDialog );
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly,
             _T( "SELECT * FROM REPDB.dbo.fellas" ) );
CDBVariant varValue;
short nFields = rs.GetODBCFieldCount( );
while( !rs.IsEOF( ) )
{
   for( short index = 0; index < nFields; index++ )
   {
      rs.GetFieldValue( index, varValue,DEFAULT_FIELD_TYPE );
   }
}

谢谢。

这是一个猜测:问题可能是与DEFAULT_FIELD_TYPE。使用普通的CRecordset, ODBC API可能无法确定字段的类型。您可以尝试省略该参数,看看是否获得了所有字段的字符数组表示,或者使用SQL_C_CHAR而不是DEFAULT_FIELD_TYPE,因为您的所有字段都是字符串类型。

您还错过了在while循环结束时对rs.MoveNext的调用。

另一种可能是使用游标库:参见GetFieldValue MSDN页面上的注释:

注意:如果你声明一个记录集对象不从CRecordset派生,做没有ODBC游标库加载。游标库要求记录集至少有一个绑定列;然而,当你使用CRecordset,没有列是绑定的。会员函数CDatabase::OpenEx和CDatabase::是否打开控件光标库将被加载。

相关内容

  • 没有找到相关文章

最新更新