SQL: typy danych SQL i C++ (ODBC)
[!UWAGA]
Ta informacja ma zastosowanie do klas MFC ODBC.Jeśli pracujesz z klas MFC DAO, zobacz temat "Porównanie z bazy danych aparatu SQL i ANSI SQL programu Microsoft Jet" w pomocy DAO.
Poniższa tabela mapowania typów danych języka SQL ANSI na typy danych języka C++.Zwiększa to w języku C, informacje podane w dodatku D ODBC SDKProgrammer's Reference na dysku CD z biblioteki MSDN. Kreatorzy zarządzać większości mapowanie typu danych dla Ciebie.Jeśli nie używasz kreatora, informacje dotyczące mapowania można użyć ułatwia pisanie kodu wymiany pola ręcznie.
Typy danych języka SQL ANSI mapowane na typy danych języka C++
Typ danych ANSI SQL |
Typ danych języka C++ |
---|---|
CHAR |
CString |
WARTOŚĆ DZIESIĘTNA |
CString 1 |
SMALLINT |
int |
REAL |
typ float |
LICZBA CAŁKOWITA |
long |
ZWOLNIJ |
double |
WARTOŚĆ DWUBAJTOWA |
double |
NUMERYCZNE |
CString 1 |
VARCHAR |
CString |
TYPU LONGVARCHAR |
CLongBinary, CString 2 |
BIT |
BOOL |
TINYINT |
BAJT |
BIGINT |
CString 1 |
BINARNY |
CByteArray |
VARBINARY |
CByteArray |
LONGVARBINARY |
CLongBinary, CByteArray 3 |
DATA |
CTime, CString |
CZAS |
CTime CString |
SYGNATURA CZASOWA |
CTime CString |
1.ANSI dziesiętne i liczbowe mapować do CString bo SQL_C_CHAR jest domyślnym typem transferu ODBC.
2.Dane znakowe poza 255 znaków jest obcinana domyślnie po zmapowaniu na CString.Długość obcinania można rozszerzyć przez wyraźnie ustawioną nMaxLength argumentu RFX_Text.
3.Dane binarne poza 255 znaków jest obcinana domyślnie po zmapowaniu na CByteArray.Długość obcinania można rozszerzyć przez wyraźnie ustawioną nMaxLength argumentu RFX_Binary.
Jeśli nie używasz Biblioteka kursorów ODBC, mogą wystąpić problem podczas próby zaktualizowania dwa lub więcej pól długi zmiennej długości za pomocą sterownika ODBC Microsoft SQL Server i klasami baz danych MFC ODBC.Typy ODBC SQL_LONGVARCHAR i SQL_LONGVARBINARY, mapować do tekstu i SQL Server typów obrazów.A CDBException jest generowany, jeśli aktualizacja pola długi zmiennej długości dwóch lub więcej tego samego połączenia z CRecordset::Update.W związku z tym, nie należy aktualizować wiele kolumn długi równocześnie z CRecordset::Update.Aktualizowanie wielu kolumn długi jednocześnie z interfejsu API ODBC SQLPutData.Można również użyć Biblioteka kursorów ODBC, ale nie jest to zalecane dla kierowców, jak sterownik programu SQL Server, które obsługują kursory i Biblioteka kursorów nie jest konieczne.
Jeśli używasz Biblioteka kursorów ODBC z klasami baz danych MFC ODBC i sterownika ODBC Microsoft SQL Server ASSERT może występować wraz z CDBException Jeśli wywołanie CRecordset::Update następuje po wywołaniu CRecordset::Requery.Zamiast tego wywołania CRecordset::Close i CRecordset::Open zamiast CRecordset::Requery.Innym rozwiązaniem jest nie używać Biblioteka kursorów ODBC, ponieważ sterownik ODBC programu SQL Server i SQL Server zapewniają natywną obsługę kursory natywnie i Biblioteka kursorów ODBC jest zbędny.