如何取出放在CDBVariant 里的布尔类型的值?
haluo 2002-05-09 11:15:22 我用VC++ 6, Access 2000 的数据库, ODBC访问.
用CRecordset 的成员函数GetFieldValue将数据库字段的值读入CBDVariant, 但如何将数据库中布尔字段的值从CDBVariant取出来?
高手请指教!
Thanks a lot!
请看我如下的程序片段:
CDatabase db;
db.OpenEx( _T( "DSN=VC_DB" ), CDatabase::openReadOnly |CDatabase::noOdbcDialog );
CRecordset rs(&db);
rs.Open(CRecordset::dynaset, _T( "Select * from myTest"));
CDBVariant varValue;
short nFields = rs.GetODBCFieldCount( );
while( !rs.IsEOF( ) )
{
for( short index = 0; index < nFields; index++ )
{
rs.GetFieldValue( index, varValue );
switch (varValue.m_dwType)
{
case 0:
case 1: // 这里如何取出布尔型的值?
// 我试过以下的方法,均取不出为(0/1) 或 (TRUE/FALSE) 的值
cout << varValue.m_boolVal << endl; // 打印的结果是:4329985
cout << &varValue.m_boolVal << endl; // 打印的结果是:0012FDD4
cout << BOOLEAN(varValue.m_boolVal) << endl; // 打印的结果是:
cout << BOOL(varValue.m_boolVal) << endl; // 打印的结果是:4329985
cout << PBOOL(varValue.m_boolVal) << endl; // 打印的结果是:00421201
cout << PBOOLEAN(varValue.m_boolVal) << endl; // 打印的结果是:!4
break;
case 2:
cout << varValue.m_chVal << endl;
break;
...
}
}
rs.MoveNext( );
}