文章編號: 298678 - 上次校閱: 2002年1月21日 - 版次: 1.0 資訊: 在 MDAC 2.7 ODBC 64 位元 API 變更
結論開放式資料庫連接 (ODBC) 的標頭和 Microsoft 資料存取元件 (MDAC) 2.7 軟體開發套件 (SDK) 所隨附的程式庫包含從舊的版本,以允許新的 64 位元平台的程式碼的程式設計師的 ODBC 的某些變更。本文摘要說明這些變更。 其他相關資訊藉由確保您的程式碼使用下面列出 ODBC 定義型別,您可以編譯您的程式碼,根據 _WIN64 或 WIN32 巨集的 64 位元和 32 位元平台。 有幾個點的特定重要:
SQL 資料型別中的變更僅 32 位元上仍然支援下列四種 SQL 類型 ; 未定義為 64 位元編譯。這些型別不再使用的 MDAC 2.7 任何參數 ; 使用這些型別會造成編譯器失敗,在 64 位元平台上。#ifdef WIN32 typedef SQLULEN SQLROWCOUNT; typedef SQLULEN SQLROWSETSIZE; typedef SQLULEN SQLTRANSID; typedef SQLLEN SQLROWOFFSET; #endif #ifdef _WIN64 typedef UINT64 SQLSETPOSIROW; #else #define SQLSETPOSIROW SQLUSMALLINT #endif #ifdef _WIN64 typedef INT64 SQLLEN; typedef UINT64 SQLULEN; #else #define SQLLEN SQLINTEGER #define SQLULEN SQLUINTEGER #endif #ifdef _WIN64 #define SQL_C_BOOKMARK SQL_C_UBIGINT #else #define SQL_C_BOOKMARK SQL_C_ULONG #endif typedef SQLULEN BOOKMARK; 函式宣告的變更下列函式簽章已變更為 64 位元程式設計以容納新的型別。以粗體文字項目是特定變更的參數。
透過指標 ODBC API 呼叫所傳回的值下列 ODBC 函數呼叫需要做為輸入參數的指標到從驅動程式會傳回資料的緩衝區。內容和傳回資料的意義是由其他輸入參數的函式來決定。在某些情況下這些方法可能會立即傳回 64 位元 (8 位元組整數) 值,而不是典型的 32 位元 (4 位元組) 整數值。這些情況下如下所示:SQLColAttribute 當 FieldIdentifier 參數有下列值之一時中, 傳回 64 位元值 * NumericAttribute: SQL_DESC_DISPLAY_SIZE SQL_DESC_LENGTH SQL_DESC_OCTET_LENGTH SQL_DESC_COUNT SQLColAttributes 當 fDescType 參數有下列值之一時中, 傳回 64 位元值 * pfDesc: SQL_COLUMN_DISPLAY_SIZE SQL_COLUMN_LENGTH SQL_COLUMN_COUNT SQLGetConnectAttr 當 屬性 參數有下列值之一時,在 [值 傳回 64 位元值: SQL_ATTR_QUIET_MODE SQLGetConnectOption 當 屬性 參數有下列值之一時,在 [值 傳回 64 位元值: SQL_ATTR_QUIET_MODE SQLGetDescField 當 FieldIdentifier 參數有下列值之一時中, 傳回 64 位元值 * ValuePtr: SQL_DESC_ARRAY_SIZE SQLGetDiagField 當 DiagIdentifier 參數有下列值之一時中, 傳回 64 位元值 * DiagInfoPtr: SQL_DIAG_CURSOR_ROW_COUNT SQL_DIAG_ROW_COUNT SQL_DIAG_ROW_NUMBER SQLGetInfo 當 資訊類型 參數有下列值之一時中, 傳回 64 位元值 * InfoValuePtr: SQL_DRIVER_HENV SQL_DRIVER_HDBC SQL_DRIVER_HLIB 當 資訊類型 具有下列 2 值之一 * InfoValuePtr 是 64 位元的輸入和輸出上: SQL_DRIVER_HSTMT SQL_DRIVER_HDESC SQLGetStmtAttr 屬性 參數有下列值之一,64 位元值會傳回在 * 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 選項 參數有下列值之一,64 位元值會傳回在 * 值: SQL_MAX_LENGTH SQL_MAX_ROWS SQL_ROWSET_SIZE SQL_KEYSET_SIZE SQLSetConnectAttr 當 屬性 參數有下列值之一時,64 位元值會傳遞 值 中: SQL_ATTR_QUIET_MODE SQLSetConnectOption 當 屬性 參數有下列值之一時,64 位元值會傳遞 值 中: SQL_ATTR_QUIET_MODE SQLSetDescField 當 FieldIdentifier 參數有下列值之一時,64 位元值傳入的 * ValuePtr: SQL_DESC_ARRAY_SIZE SQLSetStmtAttr 當 屬性 參數有下列值之一時,64 位元值傳入的 * 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 當 選項 參數有下列值之一時,64 位元值傳入的 * 值: SQL_MAX_LENGTH SQL_MAX_ROWS SQL_ROWSET_SIZE SQL_KEYSET_SIZE ?考您可以取得 MDAC 2.7 程式庫和支援可以從下列 Microsoft 網站安裝 Microsoft 平台 SDK 從 64 位元編譯所需的標頭檔: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm
(http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm)
ODBC 應用程式將需要使用下列檔案:標頭檔:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:298678?
(http://support.microsoft.com/kb/298678/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群文章翻譯 |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



回此頁最上方