Bagikan melalui


Jenis Data Pemetaan (ODBC)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Driver ODBC Klien Asli SQL Server memetakan jenis data SQL Server SQL ke jenis data ODBC SQL. Bagian di bawah ini membahas jenis data SQL Server SQL dan jenis data ODBC SQL yang dipetakan. Mereka juga membahas jenis data ODBC SQL dan jenis data ODBC C yang sesuai, serta konversi yang didukung dan default.

Catatan

Jenis data tanda waktu SQL Servermemetakan ke SQL_BINARY atau SQL_VARBINARY tipe data ODBC karena nilai dalam kolom tanda waktu bukan nilai tanggalwaktu, tetapi nilai biner(8) atau varbinary(8) yang menunjukkan urutan aktivitas SQL Server pada baris. Jika driver ODBC Klien Asli SQL Server menemukan nilai SQL_C_WCHAR (Unicode) yang merupakan jumlah byte ganjil, byte ganjil berikutnya dipotong.

Menangani Jenis Data sql_variant di ODBC

Kolom jenis data sql_variant dapat berisi salah satu jenis data di SQL Server kecuali objek besar (LOB), seperti teks, ntext, dan gambar. Misalnya, kolom dapat berisi nilai smallint untuk beberapa baris, nilai float untuk baris lain, dan nilai karakter/nchar di sisanya.

Jenis data sql_variant mirip dengan jenis data Varian di Visual Basic.

Mengambil Data dari Server

ODBC tidak memiliki konsep jenis varian, membatasi penggunaan jenis data sql_variant dengan driver ODBC di SQL Server. Di SQL Server, jika pengikatan ditentukan, jenis data sql_variant harus terikat ke salah satu jenis data ODBC yang didokumentasikan. SQL_CA_SS_VARIANT_TYPE, atribut baru khusus untuk driver ODBC SQL Server Native Client, mengembalikan jenis data instans di kolom sql_variant kepada pengguna.

Jika tidak ada pengikatan yang ditentukan, fungsi SQLGetData dapat digunakan untuk menentukan jenis data instans di kolom sql_variant .

Untuk mengambil data sql_variant , ikuti langkah-langkah ini.

  1. Panggil SQLFetch untuk memposisikan ke baris yang diambil.

  2. Panggil SQLGetData, menentukan SQL_C_BINARY untuk jenis dan 0 untuk panjang data. Ini memaksa driver untuk membaca header sql_variant . Header menyediakan jenis data instans tersebut di kolom sql_variant . SQLGetData mengembalikan ukuran (dalam byte) dari nilai.

  3. Panggil SQLColAttribute dengan menentukan SQL_CA_SS_VARIANT_TYPE sebagai nilai atributnya. Fungsi ini akan mengembalikan jenis data C instans di kolom sql_variant ke klien.

Berikut adalah segmen kode yang menunjukkan langkah-langkah sebelumnya.

while ((retcode = SQLFetch (hstmt))==SQL_SUCCESS)  
{  
    if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)  
    {  
        SQLError (NULL, NULL, hstmt, NULL,   
                    &lNativeError,szError,MAX_DATA,&sReturned);  
        printf_s ("%s\n",szError);  
        goto Exit;  
    }  
    retcode = SQLGetData (hstmt, 1, SQL_C_BINARY,   
                                pBuff,0,&Indicator);//Figure out the length  
    if (retcode != SQL_SUCCESS_WITH_INFO && retcode != SQL_SUCCESS)  
    {  
        SQLError (NULL, NULL, hstmt, NULL, &lNativeError,   
                    szError,MAX_DATA,&sReturned);  
        printf_s ("%s\n",szError);  
        goto Exit;  
    }  
    printf_s ("Byte length : %d ",Indicator); //Print out the byte length  
  
    int iValue = 0;  
    retcode = SQLColAttribute (hstmt, 1, SQL_CA_SS_VARIANT_TYPE, NULL,   
                                        NULL,NULL,&iValue);  //Figure out the type  
    printf_s ("Sub type = %d ",iValue);//Print the type, the return is C_type of the column]  
  
// Set up a new binding or do the SQLGetData on that column with   
// the appropriate type  
}  

Jika pengguna membuat pengikatan menggunakan SQLBindCol, driver membaca metadata dan data. Driver kemudian mengonversi data ke jenis ODBC yang sesuai yang ditentukan dalam pengikatan.

Mengirim Data ke Server

SQL_SS_VARIANT, jenis data baru khusus untuk driver ODBC SQL Server Native Client, digunakan untuk data yang dikirim ke kolom sql_variant. Saat mengirim data ke server menggunakan parameter (misalnya, INSERT INTO TableName VALUES (?,?)), SQLBindParameter digunakan untuk menentukan informasi parameter termasuk jenis C dan jenis SQL Server yang sesuai. Driver ODBC Klien Asli SQL Server akan mengonversi jenis data C menjadi salah satu subjenis sql_variant yang sesuai.

Lihat Juga

Hasil Pemrosesan (ODBC)