Mengonversi Data dari C ke Jenis Data SQL

Ketika aplikasi memanggil SQLExecute atau SQLExecDirect, driver mengambil data untuk parameter apa pun yang terikat dengan SQLBindParameter dari lokasi penyimpanan dalam aplikasi. Saat aplikasi memanggil SQLSetPos, driver mengambil data untuk pembaruan atau menambahkan operasi dari kolom yang terikat dengan SQLBindCol. Untuk parameter data-at-execution, aplikasi mengirimkan data parameter dengan SQLPutData. Jika perlu, driver mengonversi data dari jenis data yang ditentukan oleh argumen ValueType di SQLBindParameter ke jenis data yang ditentukan oleh argumen ParameterType di SQLBindParameter, lalu mengirim data ke sumber data.

Tabel berikut ini memperlihatkan konversi yang didukung dari jenis data ODBC C ke jenis data ODBC SQL. Lingkaran yang diisi menunjukkan konversi default untuk jenis data SQL (jenis data C tempat data akan dikonversi saat nilai ValueType atau bidang deskriptor SQL_DESC_CONCISE_TYPE SQL_C_DEFAULT). Lingkaran berongga menunjukkan konversi yang didukung.

Format data yang dikonversi tidak terpengaruh oleh pengaturan negara atau wilayah Windows.

Supported conversions: ODBC C to SQL data types

Tabel di bagian berikut menjelaskan bagaimana driver atau sumber data mengonversi data yang dikirim ke sumber data; driver diperlukan untuk mendukung konversi dari semua jenis data ODBC C ke jenis data ODBC SQL yang didukungnya. Untuk jenis data ODBC C tertentu, kolom pertama tabel mencantumkan nilai input hukum argumen ParameterType di SQLBindParameter. Kolom kedua mencantumkan hasil pengujian yang dilakukan driver untuk menentukan apakah dapat mengonversi data. Kolom ketiga mencantumkan SQLSTATE yang dikembalikan untuk setiap hasil oleh SQLExecDirect, SQLExecute, SQLBulkOperations, SQLSetPos, atau SQLPutData. Data dikirim ke sumber data hanya jika SQL_SUCCESS dikembalikan.

Jika argumen ParameterType di SQLBindParameter berisi pengidentifikasi tipe data ODBC SQL yang tidak ditampilkan dalam tabel untuk jenis data C tertentu, SQLBindParameter mengembalikan SQLSTATE 07006 (Pelanggaran atribut jenis data terbatas). Jika argumen ParameterType berisi pengidentifikasi khusus driver dan driver tidak mendukung konversi dari jenis data ODBC C tertentu ke jenis data SQL khusus driver tersebut, SQLBindParameter mengembalikan SQLSTATE HYC00 (Fitur opsional tidak diimplementasikan).

Jika argumen ParameterValuePtr dan StrLen_or_IndPtr yang ditentukan dalam SQLBindParameter keduanya adalah penunjuk null, fungsi tersebut mengembalikan SQLSTATE HY009 (Penggunaan pointer null yang tidak valid). Meskipun tidak ditampilkan dalam tabel, aplikasi menetapkan nilai buffer panjang/indikator yang ditunjukkan oleh argumen StrLen_or_IndPtr SQLBindParameter atau nilai argumen StrLen_or_IndPtr SQLPutData ke SQL_NULL_DATA untuk menentukan nilai data NULL SQL. ( argumen StrLen_or_IndPtr sesuai dengan bidang SQL_DESC_OCTET_LENGTH_PTR APD.) Aplikasi mengatur nilai-nilai ini ke SQL_NTS untuk menentukan bahwa nilai dalam *ParameterValuePtr di SQLBindParameter atau *DataPtr di SQLPutData (ditunjukkan oleh bidang SQL_DESC_DATA_PTR APD) adalah string yang dihentikan null.

Istilah berikut digunakan dalam tabel:

  • Panjang byte data - Jumlah byte data SQL yang tersedia untuk dikirim ke sumber data, apakah data akan dipotong atau tidak sebelum dikirim ke sumber data. Untuk data string, ini tidak menyertakan spasi untuk karakter penghentian null.

  • Panjang byte kolom - Jumlah byte yang diperlukan untuk menyimpan data di sumber data.

  • Panjang byte karakter - Jumlah maksimum byte yang diperlukan untuk menampilkan data dalam bentuk karakter. Ini seperti yang didefinisikan untuk setiap jenis data SQL dalam Ukuran Tampilan, kecuali panjang byte karakter dalam byte, sementara ukuran tampilan dalam karakter.

  • Jumlah digit - Jumlah karakter yang digunakan untuk mewakili angka, termasuk tanda minus, titik desimal, dan eksponen (jika diperlukan).

  • Kata-kata dalam
    miring - Elemen tata bahasa SQL. Untuk sintaks elemen tata bahasa, lihat Lampiran C: Tata Bahasa SQL.

Bagian ini berisi topik berikut.