Makale numarası: 298678 - Son Gözden Geçirme: 21 Ocak 2002 Pazartesi - Gözden geçirme: 1.0

BILGI: ODBC 64-bit API değişiklikleri MDAC 2.7

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Programcılar, kod için yeni 64 bit platformlar için izin vermek için ODBC, daha önceki sürümlerindeki bazı değişiklikler, Microsoft Data Access Components (MDAC) 2.7 Yazılım Geliştirme Seti (SDK) ile birlikte gelen kitaplıkları ve Açık Veritabanı Bağlanılabilirliği (ODBC) üstbilgilerini içerir. Bu makalede, bu değişiklikleri özetler.

Daha fazla bilgi

Kodunuzu, aşağıda listelenen ODBC tanımlı türlerini kullanmasını sağlayarak, kodunuzu _WIN64 veya wın32 makroları tabanlı, hem de 64-bit ve 32-bit platformlar için derlemeye görebilirsiniz.

Belirli bir önem birkaç nokta vardır:
  • Bir işaretçi boyutu 4 bayt ' 8 bayt gitti olsa da, 4 baytlık değer tamsayılarla ve longs olarak kalır. INT64 ve UINT64 için 8 bayt tamsayı olarak tanımlandı. Bu, ODBC SQLLEN ve SQLULEN için 64-bit derlerken dönüştürülür. Uygun olan yerlerde SQLINTEGER SQLUINTEGER parametrelerle önceden tanımlanmış bazı ODBC işlevleri bu nedenle değiştirildi. Bu gibi durumlarda, aşağıdaki ODBC tanımlı veri türleri için belirli değişiklikleri yan? s?ra numaralandırılır.
  • Işaretçi parametresi alma'olarak bildirilen birkaç ODBC işlevlerini vardır. 32-Bit ODBC imleç türü çağrı bağlama arabellekleri için işaretçiler yanı sıra, tamsayı veri geçirmek için sıklıkla kullanılır. Işaretçiler ve tamsayılar aynı uzunlukta olduğundan bu tabii ki, olası; bu 64-bit Windows durumda değil.
  • Bazı güvenlik tanımlayıcısı, alanlar ayarlanabilir ve diğerleri yine de 32 bitlik değerleri çalışırken çeşitli SQLSet... ve SQLGet alınan... işlevleri uyum 64-bit değerine değiştirildi. Ayar ve bu alanları alınıyor uygun boyuta arabellek kullanmasını sağlamak için bu yöntemleri arayan karşılamaya. Alanları hangi tanımlayıcısı değiştirilmiş olan özellikleri, bu makalenin son bölümünde listelenir.

Değişiklikleri SQL veri türleri

Aşağıdaki dört SQL türü, yalnızca 32 bit hala desteklenmektedir; 64-bit derlerken için tanımlanmamış. Bu türler, MDAC 2.7 herhangi bir parametre için kullanılır; bu türlerinin kullanımını, 64 bitlik platformlarda derleyici hataları neden olur.
#ifdef WIN32
typedef SQLULEN SQLROWCOUNT;
typedef SQLULEN SQLROWSETSIZE;
typedef SQLULEN SQLTRANSID;
typedef SQLLEN SQLROWOFFSET;
#endif
					
SQLSETPOSIROW'in tanımı için hem 32-bit ve 64-bit derlerken değişti:
#ifdef _WIN64
typedef UINT64 SQLSETPOSIROW;
#else
#define SQLSETPOSIROW SQLUSMALLINT
#endif
					
SQLLEN ve SQLULEN tanımları için 64-bit derlerken değişti:
#ifdef _WIN64
typedef INT64 SQLLEN;
typedef UINT64 SQLULEN;
#else
#define SQLLEN SQLINTEGER
#define SQLULEN SQLUINTEGER
#endif
					
2.0 Istemcilerinin, 64-bit derlerken için ODBC 3. 0'da, SQL_C_BOOKMARK önerilmiyor olsa da, bu değeri değiştirildi:
#ifdef _WIN64
#define SQL_C_BOOKMARK SQL_C_UBIGINT
#else
#define SQL_C_BOOKMARK SQL_C_ULONG
#endif
					
BOOKMARK türü, yeni üstbilgilerinde farklı şekilde tanımlanır:
typedef SQLULEN         BOOKMARK;
					

Işlev bildirimi değişiklikleri

Aşağıdaki işlevi imzalar, 64-bit yeni türleri uyması için programlama değiştirdiniz. Kalın metin maddelerinin belirli parametreleri değiştirdiniz.
  • SQLBindCol (SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValue, SQLLEN BufferLengthSQLLEN * StrLen_or_Ind);
  • SQLBindParam (SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType, SQLSMALLINT ParameterType, SQLULEN LengthPrecision, SQLSMALLINT ParameterScale, 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, SQLUSMALLINT ColumnNumber, FieldIdentifier SQLUSMALLINT, SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength SQLSMALLINT * StringLength, SQLLEN * NumericAttribute)
  • SQLColAttributes (SQLHSTMT hstmt, SQLUSMALLINT icol, fDescType. SQLUSMALLINT, SQLPOINTER rgbDesc, SQLSMALLINT cbDescMax, SQLSMALLINT * pcbDesc, SQLLEN * pfDesc);
  • SQLDescribeCol (SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLCHAR * ColumnName SQLSMALLINT BufferLength, SQLSMALLINT * NameLength, SQLSMALLINT * DataType, SQLULEN * ColumnSize, SQLSMALLINT * DecimalDigits, SQLSMALLINT * 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, SQLSMALLINT FetchOrientation, SQLLEN FetchOffset);
  • SQLGetData (SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValue, SQLLEN BufferLength, SQLLEN * StrLen_or_Ind);
  • SQLGetDescRec (SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, SQLCHAR * adı, SQLSMALLINT BufferLength, SQLSMALLINT * StringLength, SQLSMALLINT * türü, SQLSMALLINT * alt tür, SQLLEN * uzunluğu, SQLSMALLINT * duyarlığı, SQLSMALLINT * ölçek, SQLSMALLINT * null);
  • SQLParamOptions(SQLHSTMT hstmt, SQLULEN crow, SQLULEN * pirow)
  • SQLPutData (SQLHSTMT StatementHandle, SQLPOINTER verileri, SQLLEN StrLen_or_Ind);
  • SQLRowCount (SQLHSTMT StatementHandle, RowCount SQLLEN *);
  • SQLSetConnectOption (ConnectHandle SQLHDBC, SQLUSMALLINT seçeneği, SQLULEN Value);
  • SQLSetPos (SQLHSTMT, hstmt SQLSETPOSIROW ırow, SQLUSMALLINT fOption, SQLUSMALLINT fLock);
  • SQLSetDescRec (SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, SQLSMALLINT türü, SQLSMALLINT alt tür, SQLLEN uzunluğu, SQLSMALLINT duyarlığı, SQLSMALLINT ölçek, SQLPOINTER verileri, SQLLEN * StringLength, SQLLEN * göstergesi);
  • SQLSetParam (SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType, SQLSMALLINT ParameterType, SQLULEN LengthPrecision, SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue SQLLEN * StrLen_or_Ind);
  • SQLSetScrollOptions (SQLHSTMT hstmt, SQLUSMALLINT, fConcurrency SQLLEN crowKeyset, SQLUSMALLINT crowRowset);
  • SQLSetStmtOption (SQLHSTMT StatementHandle, SQLUSMALLINT seçeneği, SQLULEN Value);

Işaretçiler yoluyla ODBC API çağrısı tarafından döndürülen değerler

Aşağıdaki ODBC işlev çağrıları veri sürücü döndürülen bir arabellek için işaretçi bir giriş parametresi olarak alın. Içerik ve döndürülen verilerin anlamını işlevler için diğer bir giriş parametreleri tarafından belirlenir. Bazı durumlarda, bu yöntemler, şimdi tipik 32-bit (4 bayt) bir tamsayı değerler yerine 64-bit (8 bayt tamsayı) değerleri döndürebilir. Bu durumlar şunlardır:

SQLColAttribute
FieldIdentifier parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer döndürülür * NumericAttribute:
sql_desc_display_size
sql_desc_length
sql_desc_octet_length
sql_desc_count

SQLColAttributes
FDescType parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer döndürülür * pfDesc:
sql_column_display_size
sql_column_length
sql_column_count

SQLGetConnectAttr
Öznitelik parametresi aşağıdaki değerlerden biri varsa, 64 bitlik bir değer, değer döndürülür:
sql_attr_quiet_mode

SQLGetConnectOption
Öznitelik parametresi aşağıdaki değerlerden biri varsa, 64 bitlik bir değer, değer döndürülür:
sql_attr_quiet_mode

SQLGetDescField
FieldIdentifier parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer döndürülür * ValuePtr:
sql_desc_array_size

SQLGetDiagField
DiagIdentifier parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer döndürülür * DiagInfoPtr:
sql_diag_cursor_row_count
sql_diag_row_count
sql_diag_row_number

Sqlgetınfo
BilgiTürü parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer döndürülür * InfoValuePtr:
sql_driver_henv
sql_driver_hdbc
sql_driver_hlib

BilgiTürü 2 aşağıdaki değerlerden biri olduğunda * InfoValuePtr giriş ve çıkış 64-bit:
sql_driver_hstmt
sql_driver_hdesc

SQLGetStmtAttr
Öznitelik parametresi aşağıdaki değerlerden biri varsa, 64 bitlik bir değer döndürülür * 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
Seçenek parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer döndürülür * değer:
sql_max_length
sql_max_rows
sql_rowset_size
sql_keyset_size

SQLSetConnectAttr
Öznitelik parametresi aşağıdaki değerlerden biri varsa, 64 bitlik bir değer, değer ' de geçirilir:
sql_attr_quiet_mode

SQLSetConnectOption
Öznitelik parametresi aşağıdaki değerlerden biri varsa, 64 bitlik bir değer, değer ' de geçirilir:
sql_attr_quiet_mode

SQLSetDescField
FieldIdentifier parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer olarak geçirilir * ValuePtr:
sql_desc_array_size

SQLSetStmtAttr
Öznitelik parametresi aşağıdaki değerlerden biri varsa, 64 bitlik bir değer olarak geçirilir * 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
Seçenek parametre aşağıdaki değerlerden biri varsa, 64 bitlik bir değer olarak geçirilir * değer:
sql_max_length
sql_max_rows
sql_rowset_size
sql_keyset_size

Referanslar

MDAC 2.7 kitaplıkları ve 64-bit derleme aşağıdaki Microsoft Web sitesinden yüklenebilir Microsoft Platform SDK'i desteklemek için gereken bir üstbilgi dosyaları edinebilirsiniz:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm (http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm)
ODBC uygulamaları, aşağıdaki dosyaları'nı kullanmanız gerekir:

Üstbilgi dosyaları:
  • Sqltypes.h
  • Sqlext.h
Kitaplığı:
  • Odbc32.lib

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Open Database Connectivity 3.7
Anahtar Kelimeler: 
kbmt kbDSupport kbinfo KB298678 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:298678  (http://support.microsoft.com/kb/298678/en-us/ )
Retired KB ArticleKullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.