Fungsi SQLDriverToDataSource
SQLDriverToDataSource mendukung terjemahan untuk driver ODBC. Fungsi ini tidak dipanggil oleh aplikasi berkemampuan ODBC; aplikasi meminta terjemahan melalui SQLSetConnectAttr. Driver yang terkait dengan ConnectionHandle yang ditentukan dalam SQLSetConnectAttr memanggil DLL yang ditentukan untuk melakukan terjemahan semua data yang mengalir dari driver ke sumber data. DLL terjemahan default dapat ditentukan dalam file inisialisasi ODBC.
Sintaks
BOOL SQLDriverToDataSource(
UDWORD fOption,
SWORD fSqlType,
PTR rgbValueIn,
SDWORD cbValueIn,
PTR rgbValueOut,
SDWORD cbValueOutMax,
SDWORD * pcbValueOut,
UCHAR * szErrorMsg,
SWORD cbErrorMsgMax,
SWORD * pcbErrorMsg);
Argumen
fOption
[Input] Nilai opsi.
fSqlType
[Input] Jenis data ODBC SQL. Argumen ini memberi tahu driver cara mengonversi rgbValueIn menjadi formulir yang dapat diterima oleh sumber data. Untuk daftar jenis data SQL yang valid, lihat Jenis Data SQL.
rgbValueIn
[Input] Nilai yang akan diterjemahkan.
cbValueIn
[Input] Panjang rgbValueIn.
rgbValueOut
[Output] Hasil terjemahan.
Catatan
DLL terjemahan tidak menghentikan nilai ini secara null.
cbValueOutMax
[Input] Panjang rgbValueOut.
pcbValueOut
[Output] Jumlah total byte (tidak termasuk byte penghentian null) yang tersedia untuk dikembalikan dalam rgbValueOut.
Untuk data karakter atau biner, jika ini lebih besar dari atau sama dengan cbValueOutMax, data dalam rgbValueOut dipotong menjadi byte cbValueOutMax .
Untuk semua jenis data lainnya, nilai cbValueOutMax diabaikan dan DLL terjemahan mengasumsikan bahwa ukuran rgbValueOut adalah ukuran jenis data C default dari jenis data SQL yang ditentukan dengan fSqlType.
Argumen pcbValueOut dapat berupa penunjuk null.
szErrorMsg
[Output] Penunjuk ke penyimpanan untuk pesan kesalahan. Ini adalah string kosong kecuali terjemahan gagal.
cbErrorMsgMax
[Input] Panjang szErrorMsg.
pcbErrorMsg
[Output] Pointer ke jumlah total byte (tidak termasuk byte null-termination) yang tersedia untuk dikembalikan di szErrorMsg. Jika ini lebih besar dari atau sama dengan cbErrorMsg, data dalam szErrorMsg dipotong menjadi cbErrorMsgMax dikurangi karakter penghentian null. Argumen pcbErrorMsg dapat berupa penunjuk null.
Kembali
TRUE jika terjemahan berhasil, FALSE jika terjemahan gagal.
Komentar
Driver memanggil SQLDriverToDataSource untuk menerjemahkan semua data (pernyataan SQL, parameter, dan sebagainya) yang meneruskan dari driver ke sumber data. DLL terjemahan mungkin tidak menerjemahkan beberapa data, tergantung pada jenis data dan tujuan DLL terjemahan. Misalnya, DLL yang menerjemahkan data karakter dari satu halaman kode ke halaman kode lainnya mengabaikan semua data numerik dan biner.
Nilai fOption diatur ke nilai vParam yang ditentukan dengan memanggil SQLSetConnectAttr dengan atribut SQL_ATTR_TRANSLATE_OPTION. Ini adalah nilai 32-bit yang memiliki arti khusus untuk DLL terjemahan tertentu. Misalnya, ini dapat menentukan terjemahan set karakter tertentu.
Jika buffer yang sama ditentukan untuk rgbValueIn dan rgbValueOut, terjemahan data dalam buffer akan dilakukan di tempat.
Meskipun cbValueIn, cbValueOutMax, dan pcbValueOut adalah jenis SDWORD, SQLDriverToDataSource tidak selalu mendukung pointer besar.
Jika SQLDriverToDataSource mengembalikan FALSE, pemotongan data mungkin telah terjadi selama terjemahan. Jika pcbValueOut (jumlah byte yang tersedia untuk dikembalikan dalam buffer output) lebih besar dari cbValueOutMax (panjang buffer output), maka pemotongan terjadi. Pengandar harus menentukan apakah pemotongan dapat diterima atau tidak. Jika pemotongan tidak terjadi, SQLDriverToDataSource mengembalikan FALSE karena kesalahan lain. Dalam kedua kasus, pesan kesalahan tertentu dikembalikan dalam szErrorMsg.
Untuk informasi selengkapnya tentang menerjemahkan data, lihat DLL Terjemahan.
Fungsi Terkait
Untuk informasi tentang | Lihat |
---|---|
Menerjemahkan data yang dikembalikan dari sumber data | SQLDataSourceToDriver |
Mengembalikan pengaturan atribut koneksi | SQLGetConnectAttr |
Mengatur atribut koneksi | SQLSetConnectAttr |