如何读出SQL Server 中nchar 和 ntext字段的值?
haluo 2002-06-04 01:34:30 我用VC++ 6, SQL Server 2000 的数据库, ODBC访问.
用CRecordset 的成员函数GetFieldValue将数据库字段的值读入CBDVariant, 但碰到字段类型为ntext 和 nchar时,程序出错,如果改成text或varchar则没问题.
高手请指教!
Thanks a lot!
请看我如下的程序片段:
CDatabase db;
db.OpenEx( _T("DSN=VC_VB;uid=test;pwd=12345"), 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 ); //碰到ntext和nchar时, 这里就报错了.
switch (varValue.m_dwType)
{
case 0:
cout << "no value" << endl;
break;
case 1:
cout << "field value:[" << (char)varValue.m_boolVal << "]" << endl;
break;
case 2:
cout << "field value:" << varValue.m_chVal << endl;
break;
case 3:
cout << "field value:" << varValue.m_iVal << endl;
break;
case 4:
cout << "field value:" << varValue.m_lVal << endl;
break;
case 5:
cout << "field value:" << varValue.m_fltVal<< endl;
break;
case 6:
cout << "field value:" << varValue.m_dblVal << endl;
break;
case 7:
cout << "field value:" << (*varValue.m_pdate).year << endl;
break;
case 8:
cout << "field value:" << LPCTSTR(*varValue.m_pstring) << endl;
break;
case 9:
cout << "field value:" << varValue.m_pbinary << endl;
break;
default:
cout << "field value:" << "hello," << endl;
break;
}
}
rs.MoveNext( );
}