Udostępnij za pośrednictwem


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.

Zobacz też

Koncepcje

SQL

SQL: wykonywanie bezpośrednich wywołań SQL (ODBC)