Bagikan melalui


Pemetaan Fungsi di Manajer Driver

Manajer driver mendukung dua titik entri untuk fungsi yang mengambil argumen string. Fungsi yang tidak terdekorasi (SQLDriverConnect) adalah bentuk fungsi ANSI. Formulir Unicode dihiasi dengan W (SQLDriverConnectW.)

File header ODBC juga mendukung fungsi yang dihiasi dengan A, (SQLDriverConnectA) untuk kenyamanan aplikasi ANSI/Unicode campuran. Panggilan yang dilakukan ke fungsi A sebenarnya adalah panggilan ke titik masuk yang tidak terdekorasi (SQLDriverConnect.)

Jika aplikasi dikompilasi dengan #define _UNICODE, file header ODBC akan memetakan panggilan fungsi yang tidak terdekorasi (SQLDriverConnect) ke versi Unicode (SQLDriverConnectW.)

Driver Manager mengenali driver sebagai driver Unicode jika SQLConnectW didukung oleh driver.

Jika driver adalah driver Unicode, Driver Manager melakukan panggilan fungsi sebagai berikut:

  • Meneruskan fungsi tanpa argumen string atau parameter langsung ke driver.

  • Meneruskan fungsi Unicode (dengan akhiran W ) langsung ke driver.

  • Mengonversi fungsi ANSI (dengan akhiran A) ke fungsi Unicode (dengan akhiran W) dengan mengonversi argumen string menjadi karakter Unicode dan meneruskan fungsi Unicode ke driver.

Jika driver adalah driver ANSI, Driver Manager melakukan panggilan fungsi sebagai berikut:

  • Meneruskan fungsi tanpa argumen string atau parameter langsung ke driver.

  • Mengonversi fungsi Unicode (dengan akhiran W ) ke panggilan fungsi ANSI dan meneruskannya ke driver.

  • Meneruskan fungsi ANSI langsung ke driver.

Driver Manager diaktifkan unicode secara internal. Akibatnya, performa optimal diperoleh oleh aplikasi Unicode yang bekerja dengan driver Unicode, karena Driver Manager hanya meneruskan fungsi Unicode ke driver. Ketika aplikasi ANSI bekerja dengan driver ANSI, Driver Manager harus mengonversi string dari ANSI ke Unicode saat memproses beberapa fungsi, seperti SQLDriverConnect. Setelah memproses fungsi, Driver Manager kemudian harus mengonversi string Unicode kembali ke ANSI sebelum mengirim fungsi ke driver ANSI.

Aplikasi tidak boleh memodifikasi atau membaca buffer parameter terikatnya ketika driver mengembalikan SQL_STILL_EXECUTING atau SQL_NEED_DATA. Driver Manager meninggalkan buffer yang terikat ke ANSI hingga driver kembali SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, atau SQL_ERROR. Aplikasi multithread tidak boleh mendapatkan akses ke nilai parameter terikat apa pun tempat utas lain menjalankan pernyataan SQL. Driver Manager mengonversi data dari Unicode ke ANSI "di tempat", dan utas lainnya mungkin melihat data ANSI di buffer ini saat driver masih memproses pernyataan SQL. Aplikasi yang mengikat data Unicode ke driver ANSI tidak boleh mengikat dua kolom berbeda ke alamat yang sama.