CRecordset::GetFieldValue

void GetFieldValue (LPCTSTR lpszNameCDBVariantamp; varValuekrótkinFieldType= DEF&AULT_FIELD_TYPE);
rzut (CDBException, CMemoryException);

void GetFieldValue (krótkie nIndexCDBVariantamp; varValuekrótkinFieldType= DEF&AULT_FIELD_TYPE);
rzut (CDBException, CMemoryException);

void GetFieldV&alue (LPCTSTR lpszNameCStringamp;strValue );
rzut (CDBException, CMemoryException);

void GetFieldV&alue (krótkie nIndexCStringamp;strValue );
rzut (CDBException, CMemoryException);

Parametry

lpszName

Nazwa pola.

varValue

Odwołanie do obiektu CDBVariant , która będzie przechowywała wartość pola.

nFieldType

Typ danych ODBC C pola. Używana jest wartość domyślna, DEFAULT_FIELD_TYPE, siły GetFieldValue w celu określenia typu c danych typu danych SQL na podstawie następującej tabeli. W przeciwnym razie można określić dane bezpośrednio wpisz lub wybierz typ danych zgodny; na przykład można zapisać dowolny typ danych do SQL_C_CHAR.

C dane typu Typ danych SQL
SQL_C_BIT SQL_BIT
SQL_C_UTINYINT SQL_TINYINT
SQL_C_SSHORT SQL_SMALLINT
SQL_C_SLONG SQL_INTEGER
SQL_C_FLOAT SQL_REAL
SQL_C_DOUBLE SQL_FLOAT
SQL_DOUBLE
SQL_C_TIMESTAMP SQL_DATE
SQL_TIME
SQL_TIMESTAMP
SQL_C_CHAR SQL_NUMERIC
SQL_DECIMAL
SQL_BIGINT
SQL_CHAR
SQL_VARCHAR
SQL_LONGVARCHAR
SQL_C_BINARY SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY

Aby uzyskać więcej informacji o typach danych ODBC zobacz tematy „typy danych języka SQL"i"C dane typy"w dodatku d ODBC SDK Programmer's Reference.

nIndex

Indeksu pola.

strValue

Odwołanie do obiektu CString , która będzie przechowywała wartość pola konwertowane na tekst, niezależnie od typu danych pola.

Uwagi

Wywołanie tej funkcji Państwa do pobierania danych pola w bieżącym rekordzie. Pola można wyszukiwać według nazwy lub przez indeks. Wartość pola można przechowywać w obiekt CDBVariant lub obiekt CString.

Jeśli zaimplementowano, pobieranie wiersza luzem, bieżący rekord jest zawsze umieszczone na pierwszą rekordu w zestawie wierszy. Aby użyć GetFieldValue rekord w obrębie danego zestawu wierszy, musi najpierw wywoływać funkcję Państwa SetRowsetCursorPosition , aby przesunąć kursor do pożądanych wiersza w tym wierszy. Następnie wywołać GetFieldValue dla tego wiersza. Aby zaimplementować wiersz luzem, pobieranie, należy określić opcję CRecordset::useMultiRowFetch parametru dwOptions w otwartej funkcji członek.

GetFieldValue można użyć, aby dynamicznie pobiera pola w czasie wykonywania, zamiast statycznie wiążące je w czasie projektowania. Na przykład jeśli zostały zadeklarowane obiektu recordset bezpośrednio z CRecordset, możesz użyć GetFieldValue do pobierania danych pola; w polu rekordu wymiany (RFX) lub luzem w polu rekordu wymiany (luzem RFX), nie jest zaimplementowana.

Uwaga   Przy deklarowaniu obiektu recordset bez wynikające z CRecordsetnie Biblioteka kursorów ODBC załadowane. Biblioteka kursorów wymaga, aby zestaw rekordów miały co najmniej jedna kolumna związana; Jednakże gdy używasz CRecordset bezpośrednio, brak kolumn związano. Członek funkcje kontroli CDatabase::OpenEx i CDatabase::Open , czy zostanie załadowana Biblioteka kursorów.

GetFieldValue wywołuje funkcję ODBC API SQLGetData. Jeśli sterownik wyświetla wartość SQL_NO_TOTAL rzeczywiste długości wartości pól, GetFieldValue zgłasza wyjątek. Aby uzyskać więcej informacji o SQLGetDatazobacz Podręcznik programisty SDK ODBC.

Przykład

Następujący przykładowy kod ilustruje wywołania GetFieldValue dla obiektu recordset zadeklarowane bezpośrednio z CRecordset.

/ / Tworzenie i otwieranie obiektu bazy danych;
/ / nie są ładowane Biblioteka kursorów
CDatabase db;
DB.OpenEx (wartość NULL, CDatabase::forceOdbcDialog);

/ / Tworzenie i otwieranie obiektu recordset
/ bezpośrednio z CRecordset. Należy zauważyć, że
/ / Tabela musi istnieć w bazie danych połączonych.
/ / Użyj forwardOnly typ zestawu rekordów dla najlepszego
/ / wydajności, ponieważ wymagana jest tylko MoveNext
R CRecordset (amp; db);
r.Otwórz (CRecordset::forwardOnly,
         _T ("wybierz * Z SomeTable"));

/ / Create obiekt CDBVariant
/ / przechowywania danych pól
CDBVariant varValue;

/ / Pętli rekordów,
/ / przy użyciu GetFieldValue i
/ / GetODBCFieldCount do pobrania
/ / danych do wszystkich kolumn
krótkie nFields = r.GetODBCFieldCount ();
podczas gdy (! UW.IsEOF ())
{
   dla (krótkie indeks = 0; Wskaźnik < nFields; indeks ++)
   {
      r.GetFieldValue (indeks, varValue);
      / / coś z varValue
   }
   r.MoveNext ();
}

r.(Zamknij);
DB.(Zamknij)

Uwaga   W przeciwieństwie do obiektów DAO, klasy CDaoRecordset CRecordset , nie ma ona funkcję Państwa SetFieldValue . Jeśli tworzysz obiekt bezpośrednio z CRecordset, jest skuteczne tylko do odczytu.

Aby uzyskać więcej informacji na temat pobierania wierszy zbiorczej, zobacz artykuł rekordów: pobieranie rekordów w masowych (ODBC) w Visual C++ Programmer's Guide.

Omówie&nie CRecordset |nbsp; Klasa członków | Wykres hierarchii

Zobacz też CRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition

Index