Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Te informacje dotyczą klas MFC ODBC. Jeśli pracujesz z klasami MFC DAO, zobacz temat "Porównanie bazy danych Microsoft Jet Database Engine SQL i ANSI SQL" w pomocy dao.
Poniższa tabela mapuje typy danych ANSI SQL na typy danych C++. Rozszerza to informacje o języku C podane w dodatku D dokumentacji referencyjnej programisty ODBC. Kreatory zarządzają większością mapowań typów danych. Jeśli nie używasz kreatora, możesz użyć informacji o mapowaniu, aby ułatwić ręczne pisanie kodu wymiany pól.
Typy danych SQL ANSI mapowane na typy danych C++
| Typ danych SQL ANSI | Typ danych C++ |
|---|---|
| CHAR | CString |
| DZIESIĘTNY |
CString 1 |
| SMALLINT | int |
| PRAWDZIWY | float |
| LICZBA CAŁKOWITA | long |
| SPŁAWIK | double |
| PODWÓJNY | double |
| NUMERYCZNY |
CString 1 |
| VARCHAR | CString |
| LONGVARCHAR |
CLongBinary, CString 2 |
| BIT | BOOL |
| TINYINT | BAJT |
| BIGINT |
CString 1 |
| DWÓJKOWY | CByteArray |
| VARBINARY | CByteArray |
| LONGVARBINARY |
CLongBinary, CByteArray 3 |
| DATA |
CTime, CString |
| CZAS |
CTime, CString |
| ZNACZNIK CZASU |
CTime, CString |
Mapa DZIESIĘTna ANSI i NUMERYCZNA, ponieważ
CStringjest domyślnym typem transferu ODBC.Dane znaków przekraczające 255 znaków są domyślnie obcinane, gdy jest mapowane na
CString. Długość obcinania można rozszerzyć, ustawiając jawnie argument nMaxLength elementuRFX_Text.Dane binarne przekraczające 255 znaków są domyślnie obcięte, gdy są mapowane na
CByteArray. Długość obcinania można rozszerzyć, ustawiając jawnie argument nMaxLength elementuRFX_Binary.
Jeśli nie używasz biblioteki kursorów ODBC, może wystąpić problem podczas próby zaktualizowania co najmniej dwóch długich pól o zmiennej długości przy użyciu sterownika ODBC programu Microsoft SQL Server i klas baz danych MFC ODBC. Typy ODBC, SQL_LONGVARCHAR i SQL_LONGVARBINARY, mapuj na typy tekstu i obrazu programu SQL Server. Wartość A CDBException jest zgłaszana w przypadku zaktualizowania co najmniej dwóch długich pól o zmiennej długości w tym samym wywołaniu metody CRecordset::Update. W związku z tym nie aktualizuj jednocześnie wielu długich kolumn za pomocą CRecordset::Updatepolecenia . Jednocześnie można zaktualizować wiele długich kolumn przy użyciu interfejsu API SQLPutDataODBC. Możesz również użyć biblioteki kursorów ODBC, ale nie jest to zalecane dla sterowników, takich jak sterownik programu SQL Server, który obsługuje kursory i nie potrzebuje biblioteki kursorów.
Jeśli używasz biblioteki kursorów ODBC z klasami baz danych MFC ODBC i sterownikiem ODBC programu Microsoft SQL Server, asertywne może wystąpić wraz z CDBException wywołaniem metody CRecordset::UpdateCRecordset::Requery. Zamiast tego wywołaj metodę CRecordset::Close , a CRecordset::Open nie CRecordset::Requery. Innym rozwiązaniem nie jest użycie biblioteki kursorów ODBC, ponieważ program SQL Server i sterownik ODBC programu SQL Server zapewniają natywną obsługę kursorów natywnie, a biblioteka kursorów ODBC nie jest potrzebna.