Aracılığıyla paylaş


Sürücü Yöneticisi'nde İşlev Eşlemesi

Sürücü yöneticisi, dize bağımsız değişkenlerini alan işlevler için iki giriş noktası sağlar. Süslenmemiş işlev (SQLDriverConnect), işlevin ANSI biçimidir. Unicode formu W (SQLDriverConnectW) ile dekore edilmiştir.

ODBC üst bilgi dosyası, karma ANSI/Unicode uygulamalarının kolaylığı için A, (SQLDriverConnectA) ile dekore edilmiş işlevleri de destekler. A işlevlerine yapılan çağrılar aslında sıralanmamış giriş noktasına (SQLDriverConnect) yapılan çağrılardır.

Uygulama _UNICODE #define ile derlenmişse, ODBC üst bilgi dosyası sıralanmamış işlev çağrılarını (SQLDriverConnect) Unicode sürümüne (SQLDriverConnectW) eşler.

Sürücü, SQLConnectW tarafından destekleniyorsa Sürücü Yöneticisi bir sürücüyü Unicode sürücüsü olarak tanır.

Sürücü bir Unicode sürücüsüyse, Driver Manager işlev çağrılarını aşağıdaki gibi yapar:

  • Dize bağımsız değişkenleri veya parametreleri olmayan bir işlevi doğrudan sürücüye geçirir.

  • Unicode işlevlerini ( W soneki ile) doğrudan sürücüye geçirir.

  • Dize bağımsız değişkenlerini Unicode karakterlerine dönüştürerek bir ANSI işlevini ( A soneki ile) Unicode işlevine ( W soneki ile) dönüştürür ve Unicode işlevini sürücüye geçirir.

Sürücü bir ANSI sürücüsüyse, Driver Manager işlev çağrılarını aşağıdaki gibi yapar:

  • Dize bağımsız değişkenleri veya parametreleri olmayan işlevleri doğrudan sürücüye geçirir.

  • Unicode işlevlerini ( W soneki ile) anSI işlev çağrısına dönüştürür ve sürücüye geçirir.

  • ANSI işlevini doğrudan sürücüye geçirir.

Sürücü Yöneticisi dahili olarak Unicode etkindir. Sonuç olarak, en iyi performans, Bir Unicode sürücüsüyle çalışan bir Unicode uygulaması tarafından elde edilir, çünkü Driver Manager yalnızca Unicode işlevlerini sürücüye geçirir. ANSI uygulaması ANSI sürücüsüyle çalışırken, Driver Manager'ın SQLDriverConnect gibi bazı işlevleri işlerken dizeleri ANSI'den Unicode'a dönüştürmesi gerekir. İşlevi işledikten sonra Driver Manager'ın, işlevi ANSI sürücüsüne göndermeden önce Unicode dizesini ANSI'ye geri dönüştürmesi gerekir.

Bir uygulama, sürücü SQL_STILL_EXECUTING veya SQL_NEED_DATA döndürdüğünde ilişkili parametre arabelleklerini değiştirmemeli veya okumamalıdır. Sürücü SQL_SUCCESS, SQL_SUCCESS_WITH_INFO veya SQL_ERROR döndürünceye kadar, Sürücü Yöneticisi arabellekleri ANSI bağlı olarak tutar. Çok iş parçacıklı bir uygulama, başka bir iş parçacığının SQL deyimini yürüttüğü ilişkili parametre değerlerine erişim kazanmamalıdır. Driver Manager verileri Unicode'dan ANSI'ye "yerinde" dönüştürür ve sürücü SQL deyimini işlemeye devam ederken diğer iş parçacığı bu arabelleklerde ANSI verilerini görebilir. Unicode verilerini ANSI sürücüsüne bağlayan uygulamalar iki farklı sütunu aynı adrese bağlamamalıdır.