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