Udostępnij za pośrednictwem


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.

Zobacz też

Koncepcje

SQL

SQL: Wywołań bezpośredniego SQL (ODBC)