INFORMACE: ODBC 64-Bit API změny v MDAC 2.7

Překlady článku Překlady článku
ID článku: 298678 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Záhlaví Open Database Connectivity (ODBC) a knihovny, které jsou dodávány s Microsoft Data Access Components (MDAC) 2.7 software development kit (SDK) obsahovat některé změny z dřívějších verzí ODBC povolit programátory kód nové 64bitové platformy. Tento článek shrnuje tyto změny.

Další informace

Zajištěním váš kód používá níže uvedené typy definované ODBC budou moci kompilace kódu pro 32bitové i 64bitové platformy na základě _WIN64 nebo makra Win32.

Existuje několik bodů konkrétní důležitost:
  • Ačkoli má velikost ukazatele pryč ze 4 bajty na 8 bajtů, celá čísla a longs zůstávají hodnoty 4 bajtů. Typy INT64 a UINT64 byly definovány pro celá čísla 8 bajtů. Pro 64bitové kompiluje tyto jsou převedeny ODBC SQLLEN a SQLULEN. Některé funkce ODBC, které byly dříve definovány s parametry SQLINTEGER a SQLUINTEGER byly změněny proto potřeby. Tyto případy jsou vypsaných níže, stejně jako určité změny typy dat definované ODBC.
  • Existuje několik funkce ODBC, které jsou deklarovány jako převzetí parametr ukazatele. 32 Bit ODBC typu ukazatel často používají k předání dat celé číslo, stejně jako ukazatelů vyrovnávacích pamětí v závislosti na kontextu volání. To bylo možné, kurzu, protože ukazatelů a celá čísla nemají stejnou délku; to není případ v Windows 64-bit.
  • Popisovač některých polí, které lze nastavit a načíst prostřednictvím různých SQLSet... a SQLGet... funkce byly změněny k pojmutí 64bitové hodnoty, zatímco ostatní jsou stále 32bitové hodnoty. Převzít nakonfigurováno v volání těchto metod zkontrolujte, zda použít odpovídající velikosti vyrovnávací paměti v nastavení a načtení těchto polí. Specifika popisovače, které byly změněny polí jsou uvedeny v poslední části tohoto článku.

Změny v datových typů SQL

Na 32bitové pouze stále podporovány následující čtyři typy SQL; nejsou definovány pro 64bitové kompiluje. Tyto typy jsou již používány pro všechny parametry MDAC 2.7; použití těchto typů způsobí selhání kompilátor na 64bitových platformách.
#ifdef WIN32
typedef SQLULEN SQLROWCOUNT;
typedef SQLULEN SQLROWSETSIZE;
typedef SQLULEN SQLTRANSID;
typedef SQLLEN SQLROWOFFSET;
#endif
					
Pro 32bitové a 64bitové kompiluje změnil definici SQLSETPOSIROW:
#ifdef _WIN64
typedef UINT64 SQLSETPOSIROW;
#else
#define SQLSETPOSIROW SQLUSMALLINT
#endif
					
Pro 64bitové kompiluje změnily definice SQLLEN a SQLULEN:
#ifdef _WIN64
typedef INT64 SQLLEN;
typedef UINT64 SQLULEN;
#else
#define SQLLEN SQLINTEGER
#define SQLULEN SQLUINTEGER
#endif
					
Ačkoli SQL_C_BOOKMARK se již nepoužívá v ODBC 3.0 pro 64bitové kompiluje 2.0 klientů má tato hodnota změněna:
#ifdef _WIN64
#define SQL_C_BOOKMARK SQL_C_UBIGINT
#else
#define SQL_C_BOOKMARK SQL_C_ULONG
#endif
					
Typ BOOKMARK je definován jinak v novější záhlaví:
typedef SQLULEN         BOOKMARK;
					

Změny deklarace funkce

Následující funkce podpisy pro 64bitové programování přizpůsobená nové typy změnily. Položky tučným písmem jsou specifické parametry, které byly změněny.
  • SQLBindCol (SQLHSTMT StatementHandle SQLUSMALLINT ColumnNumber TargetType SQLSMALLINT SQLPOINTER TargetValue SQLLEN BufferLengthSQLLEN * StrLen_or_Ind);
  • SQLBindParam (SQLHSTMT StatementHandle SQLUSMALLINT ParameterNumber ValueType SQLSMALLINT SQLSMALLINT ParameterType SQLULEN LengthPrecision, ParameterScale SQLSMALLINT SQLPOINTER ParameterValue SQLLEN * StrLen_or_Ind);
  • SQLBindParameter (SQLHSTMT hstmt SQLUSMALLINT ipar SQLSMALLINT fParamType SQLSMALLINT fCType SQLSMALLINT fSqlType, SQLULEN cbColDef, SQLSMALLINT ibScale SQLPOINTER rgbValue, SQLLEN cbValueMax, SQLLEN * pcbValue);
  • SQLColAttribute (SQLHSTMT StatementHandle ColumnNumber SQLUSMALLINT SQLUSMALLINT FieldIdentifier CharacterAttribute SQLPOINTER SQLSMALLINT BufferLength SQLSMALLINT * StringLength SQLLEN * NumericAttribute)
  • SQLColAttributes (SQLHSTMT hstmt, icol SQLUSMALLINT fDescType SQLUSMALLINT rgbDesc SQLPOINTER cbDescMax SQLSMALLINT SQLSMALLINT * pcbDesc, SQLLEN * pfDesc);
  • Zda (SQLHSTMT StatementHandle, ColumnNumber SQLUSMALLINT SQLCHAR * název_sloupce BufferLength SQLSMALLINT SQLSMALLINT * NameLength SQLSMALLINT * DataType, SQLULEN * ColumnSize, SQLSMALLINT * DecimalDigits SQLSMALLINT * s možnou hodnotou Null);
  • SQLDescribeParam (SQLHSTMT hstmt SQLUSMALLINT ipar SQLSMALLINT * pfSqlType, SQLULEN * pcbParamDef, SQLSMALLINT * pibScale SQLSMALLINT * pfNullable);
  • SQLExtendedFetch(SQLHSTMT hstmt, SQLUSMALLINT fFetchType, SQLLEN irow, SQLULEN * pcrow, SQLUSMALLINT * rgfRowStatus)
  • SQLFetchScroll (SQLHSTMT StatementHandle FetchOrientation SQLSMALLINT SQLLEN FetchOffset);
  • SQLGetData (SQLHSTMT StatementHandle ColumnNumber SQLUSMALLINT SQLSMALLINT TargetType TargetValue SQLPOINTER SQLLEN BufferLengthSQLLEN * StrLen_or_Ind);
  • SQLGetDescRec (SQLHDESC DescriptorHandle, RecNumber SQLSMALLINT SQLCHAR * název SQLSMALLINT BufferLength, SQLSMALLINT * StringLength SQLSMALLINT * typ, SQLSMALLINT * podtyp, SQLLEN * délka, SQLSMALLINT * přesnost, SQLSMALLINT * měřítko, SQLSMALLINT * s možnou hodnotou Null);
  • SQLParamOptions(SQLHSTMT hstmt, SQLULEN crow, SQLULEN * pirow)
  • SQLPutData (SQLHSTMT StatementHandle dat SQLPOINTER SQLLEN StrLen_or_Ind);
  • SQL (SQLHSTMT StatementHandle, SQLLEN * PočetŘádků);
  • SQLSetConnectOption (SQLHDBC ConnectHandle možnost SQLUSMALLINT SQLULEN hodnota);
  • SQLSetPos (SQLHSTMT hstmt, SQLSETPOSIROW irow, SQLUSMALLINT fOption, SQLUSMALLINT fLock);
  • SQLSetDescRec (SQLHDESC DescriptorHandle RecNumber SQLSMALLINT SQLSMALLINT typ, podtypu SQLSMALLINT SQLLEN délka, přesnost SQLSMALLINT SQLSMALLINT měřítko dat SQLPOINTER SQLLEN * StringLength, SQLLEN * indikátor);
  • SQLSetParam (SQLHSTMT StatementHandle ParameterNumber SQLUSMALLINT SQLSMALLINT ValueType ParameterType SQLSMALLINT SQLULEN LengthPrecision, ParameterScale SQLSMALLINT SQLPOINTER ParameterValue SQLLEN * StrLen_or_Ind);
  • SQLSetScrollOptions (SQLHSTMT hstmt SQLUSMALLINT fConcurrency, SQLLEN crowKeyset, SQLUSMALLINT crowRowset);
  • SQLSetStmtOption (SQLHSTMT StatementHandle možnost SQLUSMALLINT SQLULEN hodnota);

Hodnoty vrácených z volání ODBC API prostřednictvím ukazatele

Následující volání funkcí ODBC trvat jako vstupní parametr ukazatele do vyrovnávací paměti vracena data z ovladače. Kontext a význam dat vrácených je určena pro funkce další vstupní parametry. V některých případech mohou tyto metody nyní vrátit 64-bit (celé číslo 8 bajtů) hodnoty místo hodnot typické 32bitové celé číslo (4 bajt). Tyto případy jsou následující:

SQLColAttribute
Při FieldIdentifier parametr má jednu z následujících hodnot, je vrácena hodnota 64-bit v * NumericAttribute:
SQL_DESC_DISPLAY_SIZE
SQL_DESC_LENGTH
SQL_DESC_OCTET_LENGTH
SQL_DESC_COUNT

SQLColAttributes
Při fDescType parametr má jednu z následujících hodnot, je vrácena hodnota 64-bit v * pfDesc:
SQL_COLUMN_DISPLAY_SIZE
SQL_COLUMN_LENGTH
SQL_COLUMN_COUNT

SQLGetConnectAttr
Pokud má parametr atribut jednu z následujících hodnot, je vrácena hodnota 64-bit v poli Hodnota:
SQL_ATTR_QUIET_MODE

SQLGetConnectOption
Pokud má parametr atribut jednu z následujících hodnot, je vrácena hodnota 64-bit v poli Hodnota:
SQL_ATTR_QUIET_MODE

SQLGetDescField
Při FieldIdentifier parametr má jednu z následujících hodnot, je vrácena hodnota 64-bit v * ValuePtr:
SQL_DESC_ARRAY_SIZE

SQLGetDiagField
Při DiagIdentifier parametr má jednu z následujících hodnot, je vrácena hodnota 64-bit v * DiagInfoPtr:
SQL_DIAG_CURSOR_ROW_COUNT
SQL_DIAG_ROW_COUNT
SQL_DIAG_ROW_NUMBER

SQLGetInfo
Při TypInfo parametr má jednu z následujících hodnot, je vrácena hodnota 64-bit v * InfoValuePtr:
SQL_DRIVER_HENV
SQL_DRIVER_HDBC
SQL_DRIVER_HLIB

Pokud má TypInfo buď následující hodnoty 2 * InfoValuePtr je 64 bitů na vstup a výstupního:
SQL_DRIVER_HSTMT
SQL_DRIVER_HDESC

SQLGetStmtAttr
Při parametr atribut má jednu z následujících hodnot, je vrácena hodnota 64-bit v * ValuePtr:
SQL_ATTR_APP_PARAM_DESC
SQL_ATTR_APP_ROW_DESC
SQL_ATTR_IMP_PARAM_DESC
SQL_ATTR_IMP_ROW_DESC
SQL_ATTR_MAX_LENGTH
SQL_ATTR_MAX_ROWS
SQL_ATTR_PARAM_BIND_OFFSET_PTR
SQL_ATTR_ROW_ARRAY_SIZE
SQL_ATTR_ROW_BIND_OFFSET_PTR
SQL_ATTR_ROW_NUMBER
SQL_ATTR_ROWS_FETCHED_PTR
SQL_ATTR_KEYSET_SIZE

SQLGetStmtOption
Při parametr Option má jednu z následujících hodnot, je vrácena hodnota 64-bit v * Hodnota:
SQL_MAX_LENGTH
SQL_MAX_ROWS
SQL_ROWSET_SIZE
SQL_KEYSET_SIZE

SQLSetConnectAttr
Pokud má parametr atribut jednu z následujících hodnot, hodnota 64-bit předaná Hodnota:
SQL_ATTR_QUIET_MODE

SQLSetConnectOption
Pokud má parametr atribut jednu z následujících hodnot, hodnota 64-bit předaná Hodnota:
SQL_ATTR_QUIET_MODE

SQLSetDescField
Pokud má parametr FieldIdentifier jednu z následujících hodnot, hodnota 64-bit předané v * ValuePtr:
SQL_DESC_ARRAY_SIZE

SQLSetStmtAttr
Pokud má parametr atribut jednu z následujících hodnot, hodnota 64-bit předané v * ValuePtr:
SQL_ATTR_APP_PARAM_DESC
SQL_ATTR_APP_ROW_DESC
SQL_ATTR_IMP_PARAM_DESC
SQL_ATTR_IMP_ROW_DESC
SQL_ATTR_MAX_LENGTH
SQL_ATTR_MAX_ROWS
SQL_ATTR_PARAM_BIND_OFFSET_PTR
SQL_ATTR_ROW_ARRAY_SIZE
SQL_ATTR_ROW_BIND_OFFSET_PTR
SQL_ATTR_ROW_NUMBER
SQL_ATTR_ROWS_FETCHED_PTR
SQL_ATTR_KEYSET_SIZE

SQLSetConnectAttr
Pokud má parametr Option jednu z následujících hodnot, hodnota 64-bit předané v * Hodnota:
SQL_MAX_LENGTH
SQL_MAX_ROWS
SQL_ROWSET_SIZE
SQL_KEYSET_SIZE

Odkazy

Můžete získat MDAC 2.7 knihoven a záhlaví soubory potřebné pro podporu 64bitových kompilace z Microsoft Platform SDK, které lze nainstalovat z následujícího webu společnosti Microsoft:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm
Aplikace ODBC bude třeba použít následující soubory:

Záhlaví souborů:
  • Sqltypes.h
  • Sqlext.h
Knihovna:
  • Odbc32.lib

Vlastnosti

ID článku: 298678 - Poslední aktualizace: 21. ledna 2002 - Revize: 1.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Open Database Connectivity 3.7
Klíčová slova: 
kbmt kbinfo KB298678 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:298678
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com