GetFieldValue

更新时间:2024-08-24 12:55

GetFieldValue是一个函数

GetFieldValue

CRecordset::GetFieldValue

void GetFieldValue( LPCTSTR lpszName, CDBVariant& varValue, short nFieldType = DEFAULT_FIELD_TYPE );

throw( CDBException, CMemoryException );

void GetFieldValue( short nIndex, CDBVariant& varValue, short nFieldType = DEFAULT_FIELD_TYPE );

throw( CDBException, CMemoryException );

void GetFieldValue( short nIndex, CStringA& strValue );

throw( CDBException, CMemoryException );

void GetFieldValue( short nIndex, CStringW& strValue );

throw( CDBException, CMemoryException );

参数:

说明:

此成员函数用来获取当前记录中的字段数据。你可以用名字或者索引来查找一个字段。也可以把字段值保存在一个CDBVariant对象或一个CString对象中。

如果你已经实现了成组行读取,则在一个行集中的当前记录总是被定位在第一个记录。要在一个给定的行集中对一个记录使用GetFieldValue,必须首先调用SetRowsetCursorPosition成员函数来将游标移动到行集中所希望的行上。然后为这一行调用GetFieldValue。要实现成组行读取,你必须指定Open成员函数中的dwOptions参数的CRecordset::useMultiRowFetch选项。

你可以使用GetFieldValue在运行时动态地读取字段,而不是在设计时静态地装订它们。例如,如果你已经直接从CRecordset声明了一个记录集对象,你就必须使用GetFieldValue来获取字段数据;记录字段交换(RFX),或者是成组记录字段交换(Bulk RFX)还没有实现。

注意:

如果你声明了一个记录集对象,而不是从CRecordset派生,则不被装载ODBC游标库。此游标库要求记录集至少有一个边界列;但是,当你直接使用CRecordset时,没有一个列是边界。成员函数CDatabase::OpenEx和CDatabase::Open控制游标库是否被装载。

GetFieldValue调用ODBC API函数SQLGetData。如果你的驱动器为字段值的实际长度输出值SQL_NO_TOTAL,GetFieldValue抛出一个异常。关于SQLGetData的更多消息,参见“ODBC SDK程序员参考”。

示例:

下面的例子代码说明如何为一个直接从CRecordset声明的记录集对象调用GetFieldValue。

// 创建并打开一个数据库对象;

// 不要装载游标库

CDatabase db;

db.OpenEx( NULL, CDatabase::forceOdbcDialog );

// 直接从CRecordset创建并打开一个记录集对象。

// 注意在一个被连接的数据库中必须存在一个表。

// 使用仅向前类型的记录集以获得最佳的性能,因为值需要MoveNext函数。

CRecordset rs( &db );

// 创建一个CDBVariant对象来保存字段数据

CDBVariant varValue;

// 在记录集中循环,使用GetFieldValue 和GetODBCFieldCount 来获取所有列中的数据

short nFields = rs.GetODBCFieldCount( );

while( !rs.IsEOF( ) )

{for( short index = 0; index < nFields; index++ ){rs.GetFieldValue( index, varValue );// 对varValue作某些操作。}rs.MoveNext( );}

rs.Close( );

db.Close( );

注意:

与DAO类CDaoRecordset不一样,CRecordset没有SetFieldValue成员函数。如果你直接从CRecordset创建了一个对象,它实际上是只读的。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}