Bagikan melalui


Perubahan Perilaku dan Driver ODBC 3.x

Atribut lingkungan SQL_ATTR_ODBC_VERSION menunjukkan kepada driver apakah perlu menunjukkan perilaku ODBC 2.x atau perilaku ODBC 3.x . Bagaimana atribut lingkungan SQL_ATTR_ODBC_VERSION diatur tergantung pada aplikasi. Aplikasi ODBC 3.x harus memanggil SQLSetEnvAttr untuk mengatur atribut ini setelah mereka memanggil SQLAllocHandle untuk mengalokasikan handel lingkungan dan sebelum mereka memanggil SQLAllocHandle untuk mengalokasikan handel koneksi. Jika mereka gagal melakukan ini, Driver Manager mengembalikan SQLSTATE HY010 (Kesalahan urutan fungsi) pada panggilan terakhir ke SQLAllocHandle.

Catatan

Untuk informasi selengkapnya tentang perubahan perilaku dan cara aplikasi bertindak, lihat Perubahan Perilaku.

Aplikasi ODBC 2.x dan aplikasi ODBC 2.x yang dikombinasikan ulang dengan file header ODBC 3.x tidak memanggil SQLSetEnvAttr. Namun, mereka memanggil SQLAllocEnv alih-alih SQLAllocHandle untuk mengalokasikan handel lingkungan. Oleh karena itu, ketika aplikasi memanggil SQLAllocEnv di Driver Manager, Driver Manager memanggil SQLAllocHandle dan SQLSetEnvAttr di driver. Dengan demikian, driver ODBC 3.x selalu dapat mengandalkan atribut ini yang ditetapkan.

Jika aplikasi yang mematuhi standar yang dikompilasi dengan bendera kompilasi ODBC_STD memanggil SQLAllocEnv (yang mungkin terjadi karena SQLAllocEnv tidak digunakan lagi dalam ISO), panggilan dipetakan ke SQLAllocHandleStd pada waktu kompilasi. Pada waktu proses, aplikasi memanggil SQLAllocHandleStd. Driver Manager mengatur atribut lingkungan SQL_ATTR_ODBC_VERSION ke SQL_OV_ODBC3. Panggilan ke SQLAllocHandleStd setara dengan panggilan ke SQLAllocHandle dengan HandleType SQL_HANDLE_ENV dan panggilan ke SQLSetEnvAttr untuk mengatur SQL_ATTR_ODBC_VERSION ke SQL_OV_ODBC3.

Dalam arsitektur driver tertentu, ada kebutuhan bagi driver untuk muncul sebagai driver ODBC 2.x atau driver ODBC 3.x , tergantung pada koneksi. Driver dalam hal ini mungkin bukan driver tetapi lapisan yang berada antara Driver Manager dan driver lain. Misalnya, ini mungkin meniru driver, seperti ODBC Spy. Dalam contoh lain, ini mungkin bertindak sebagai gateway, seperti EDA/SQL. Untuk muncul sebagai driver ODBC 3.x , driver seperti itu harus dapat mengekspor SQLAllocHandle, dan muncul sebagai driver ODBC 2.x , harus dapat mengekspor SQLAllocConnect, SQLAllocEnv, dan SQLAllocStmt. Ketika lingkungan, koneksi, atau pernyataan akan dialokasikan, Manajer Driver memeriksa untuk melihat apakah driver ini mengekspor SQLAllocHandle. Sejak driver melakukannya, Driver Manager memanggil SQLAllocHandle di driver. Jika driver bekerja dengan driver ODBC 2.x , driver harus memetakan panggilan ke SQLAllocHandle ke SQLAllocConnect, SQLAllocEnv, atau SQLAllocStmt, sebagaimana mestinya. Ini juga harus tidak melakukan apa pun dengan panggilan SQLSetEnvAttr saat berperilaku sebagai driver ODBC 2.x .

Bagian ini berisi topik berikut.