SQL: Typy danych języka C++ (ODBC) i SQL
[!UWAGA]
Te informacje dotyczą klas MFC ODBC.Jeśli pracujesz z klas MFC DAO, zobacz temat "Porównanie z Microsoft Jet bazy danych aparatu SQL i ANSI SQL" w pomocy DAO.
Poniższa tabela mapowania typów danych języka SQL ANSI na typy danych języka C++.Usprawnia to pracę języka c informacje podane w dodatku d ODBC SDKProgrammer's Reference na dysku CD z biblioteki MSDN.Kreatorzy zarządzać większości mapowania typów danych dla Ciebie.Jeśli nie używasz kreatora, można użyć informacji o mapowaniu 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 |
DZIESIĘTNY |
CString 1 |
SMALLINT |
int |
REAL |
Pływak |
LICZBA CAŁKOWITA |
długie |
PŁYWAK |
podwójne |
PODWÓJNE |
podwójne |
NUMERYCZNE |
CString 1 |
VARCHAR |
CString |
LONGVARCHAR |
CLongBinary, CString 2 |
BIT |
BOOL |
TINYINT |
BAJT |
BIGINT |
CString 1 |
BINARNE |
CByteArray |
VARBINARY |
CByteArray |
LONGVARBINARY |
CLongBinary, CByteArray 3 |
DATA |
CTime, CString |
CZAS |
CTime, CString |
SYGNATURA CZASOWA |
CTime, CString |
1.ANSI DZIESIĘTNY i NUMERYCZNE mapę do CString ponieważ SQL_C_CHAR jest to domyślny typ transferu ODBC.
2.Dane znakowe poza 255 znaków jest obcinana domyślnie po zmapowaniu na CString.Długość obcinania można rozszerzyć poprzez odpowiednie ustawienie 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ć poprzez odpowiednie ustawienie nMaxLength argumentu RFX_Binary.
Jeśli nie używasz Biblioteka kursorów ODBC, mogą wystąpić problem podczas próby aktualizacji dwóch lub więcej pól długo zmiennej długości, przy użyciu sterownika ODBC Microsoft SQL Server i klas MFC ODBC bazy danych.Typy ODBC SQL_LONGVARCHAR i SQL_LONGVARBINARY, mapować do tekstu i obrazów typu programu SQL Server.A CDBException jest generowany po aktualizacji dwóch lub więcej pól długo zmiennej długości na tym samym wywołanie CRecordset::Update.W związku z tym, należy aktualizować wiele kolumn długie równocześnie z CRecordset::Update.Aktualizowanie wielu kolumn długie równocześnie z interfejsu API ODBC SQLPutData.Można również użyć Biblioteka kursorów ODBC, ale nie jest to zalecane dla sterowników, takich jak sterownik SQL Server, które obsługują kursory i nie ma potrzeby Biblioteka kursorów.
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ż program SQL Server i sterownik ODBC dla programu SQL Server zapewniają natywną obsługę kursory macierzyście i Biblioteka kursorów ODBC nie jest potrzebne.