Sdílet prostřednictvím


SQL: SQL a datové typy C++ (ODBC)

Poznámka:

Tyto informace platí pro třídy MFC ODBC. Pokud pracujete s třídami MFC DAO, přečtěte si téma Porovnání sql databázového stroje Microsoft Jet a ANSI SQL v nápovědě k rozhraní DAO.

Následující tabulka mapuje datové typy ANSI SQL na datové typy C++. Tím se rozšíří informace jazyka C uvedené v dodatku D referenční dokumentace programátora ODBC. Průvodci spravují většinu mapování datových typů za vás. Pokud průvodce nepoužíváte, můžete pomocí informací o mapování ručně napsat kód výměny polí.

Datové typy ANSI SQL mapované na datové typy C++

Datový typ ANSI SQL Datový typ C++
UKLÍZEČKA CString
DESETINNÝ CString 1
SMALLINT int
REÁLNÝ float
CELÉ ČÍSLO long
PLOUT double
DVOJITÝ double
ČÍSELNÝ CString 1
VARCHAR CString
LONGVARCHAR CLongBinary, CString 2
BIT BOOL
TINYINT BAJT
BIGINT CString 1
BINÁRNÍ CByteArray
VARBINARY CByteArray
LONGVARBINARY CLongBinary, CByteArray 3
DATE (Datum) CTime, CString
ČAS CTime, CString
ČASOVÉ RAZÍTKO CTime, CString
  1. ANSI DECIMAL a NUMERIC mapovat, CString protože SQL_C_CHAR je výchozím typem přenosu ODBC.

  2. Data znaků nad rámec 255 znaků jsou ve výchozím nastavení zkrácena při mapování na CString. Délku zkrácení můžete rozšířit explicitním nastavením argumentu nMaxLength argumentu RFX_Text.

  3. Binární data nad rámec 255 znaků jsou ve výchozím nastavení zkrácena při mapování na CByteArray. Délku zkrácení můžete rozšířit explicitním nastavením argumentu nMaxLength argumentu RFX_Binary.

Pokud nepoužíváte knihovnu kurzorů ODBC, může dojít k potížím při pokusu o aktualizaci dvou nebo více dlouhých polí s proměnlivou délkou pomocí ovladače ODBC microsoft SQL Serveru a tříd databáze MFC ODBC. Typy ODBC, SQL_LONGVARCHAR a SQL_LONGVARBINARY, se mapuje na typy SQL Serveru s textem a obrázkem. Vyvolá CDBException se, pokud aktualizujete dvě nebo více dlouhých polí s délkou proměnné při stejném volání CRecordset::Update. Proto neaktualizovat více dlouhých sloupců současně s CRecordset::Update. Pomocí rozhraní ODBC API SQLPutDatamůžete aktualizovat více dlouhých sloupců současně . Můžete také použít knihovnu kurzorů ODBC, ale nedoporučuje se to pro ovladače, jako je ovladač SQL Serveru, který podporuje kurzory a nepotřebuje knihovnu kurzorů.

Pokud používáte knihovnu kurzorů ODBC s databázovými třídami MFC ODBC a ovladačem ODBC microsoft SQL Serveru, může dojít k ASSERT spolu s CDBException voláním CRecordset::Update volání CRecordset::Requery. Místo toho volejte CRecordset::Close a CRecordset::Open ne CRecordset::Requery. Dalším řešením není použít knihovnu kurzorů ODBC, protože SQL Server a ovladač ODBC sql serveru poskytují nativní podporu pro kurzory nativně a knihovna kurzorů ODBC není nutná.

Viz také

SQL
SQL: Přímá volání SQL (ODBC)