SQL: SQL a datové typy C++ (ODBC)
[!POZNÁMKA]
Tyto informace platí pro třídy knihovny MFC rozhraní ODBC.Pokud pracujete se třídami knihovny MFC rozhraní DAO, prohlédněte si "Comparison of Microsoft Jet Database Engine SQL and ANSI SQL" v nápovědě rozhraní DAO.
Následující tabulka mapuje datové typy ANSI SQL na datové typy jazyka C++.Informace o těchto argumentech jazyka C jsou uvedené v dodatku D ODBC SDKReference programátora na disku CD knihovny MSDN.Průvodci spravují mapování většiny datových typů za vás.Pokud nepoužijete průvodce, můžete informace o mapování použít, abyste si usnadnili ruční psaní kódu.
Datové typy SQL ANSI mapované na datové typy jazyka C++
Datové typy ANSI SQL |
Datové typy jazyka C++ |
---|---|
CHAR |
CString |
DESÍTKOVÉ |
CString 1 |
SMALLINT |
int |
REAL |
float |
INTEGER |
long |
FLOAT |
double |
DOUBLE |
double |
NUMERIC |
CString 1 |
VARCHAR |
CString |
LONGVARCHAR |
CLongBinary, CString 2 |
BIT |
BOOL |
TINYINT |
BYTE |
BIGINT |
CString 1 |
BINARY |
CByteArray |
VARBINARY |
CByteArray |
LONGVARBINARY |
CLongBinary, CByteArray 3 |
DATE |
CTime, CString |
TIME |
CTime, CString |
TIMESTAMP |
CTime, CString |
1.ANSI DECIMAL a NUMERIC se mapují na CString protože SQL_C_CHAR je výchozí typ převodu pro rozhraní ODBC.
2.Textová data větší než 255 znaků jsou standardně zkrácena při mapování na CString.Délku zkrácení můžete rozšířit tak, že explicitně nastavíte nMaxLength argument RFX_Text.
3.Binární data větší než 255 znaků jsou standardně zkrácena při mapování na CByteArray.Délku zkrácení můžete rozšířit tak, že explicitně nastavíte nMaxLength argument RFX_Binary.
Pokud nepoužíváte knihovnu kurzorů rozhraní ODBC, může dojít k potížím při pokusu o aktualizace dvou nebo více dlouhých polí proměnné délky pomocí ovladače rozhraní ODBC Microsoft SQL Server a databázových tříd knihovny MFC rozhraní ODBC.Typy rozhraní ODBC SQL_LONGVARCHAR a SQL_LONGVARBINARY, mapují na text a bitové kopie typů SQL Server.CDBException je vyvolána při aktualizaci dvou nebo více dlouhých polí proměnné délky při stejném volání CRecordset::Update.Proto neaktualizujte více dlouhých sloupců současně pomocí CRecordset::Update.Můžete aktualizovat více dlouhých sloupců současně pomocí SQLPutData z rozhraní API ODBC.Můžete také použít knihovnu kurzorů rozhraní ODBC, ale to se nedoporučuje pro ovladače například serveru SQL Server, které podporují kurzory a tudíž nepotřebují knihovnu kurzorů.
Pokud používáte knihovnu kurzorů ODBC s třídami databáze knihovny MFC rozhraní ODBC a ovladače rozhraní ODBC Microsoft SQL Server, ASSERT se může vyskytnout spolu s CDBException jestliže volá CRecordset::Update a následně CRecordset::Requery.Namísto CRecordset::Requery zavolejte CRecordset::Close a CRecordset::Open.Jiné řešení je nepoužít knihovnu kurzorů rozhraní ODBC, protože SQL Server a ovladač SQL Server rozhraní ODBC poskytuje nativní podporu pro kurzory nativně a knihovna kurzorů rozhraní ODBC není nutná.