Bagikan melalui


SQL: Jenis Data SQL dan C++ (ODBC)

Catatan

Informasi ini berlaku untuk kelas MFC ODBC. Jika Anda bekerja dengan kelas MFC DAO, lihat topik "Perbandingan Microsoft Jet Database Engine SQL dan ANSI SQL" di Bantuan DAO.

Tabel berikut memetakan tipe data ANSI SQL ke jenis data C++. Ini menambah informasi bahasa C yang diberikan dalam Lampiran D dari dokumentasi Referensi Programmer ODBC. Panduan mengelola sebagian besar pemetaan tipe data untuk Anda. Jika Anda tidak menggunakan wizard, Anda bisa menggunakan informasi pemetaan untuk membantu Anda menulis kode pertukaran bidang secara manual.

Tipe Data ANSI SQL Dipetakan ke Tipe Data C++

Jenis data ANSI SQL Jenis data C++
CHAR CString
DECIMAL CString 1
SMALLINT int
NYATA float
INTEGER long
FLOAT double
DOUBLE double
NUMERIK CString 1
VARCHAR CString
LONGVARCHAR CLongBinary, CString 2
BIT BOOL
TINYINT BYTE
BIGINT CString 1
BINER CByteArray
VARBINARY CByteArray
LONGVARBINARY CLongBinary, CByteArray 3
TANGGAL CTime, CString
WAKTU CTime, CString
STEMPEL WAKTU CTime, CString
  1. ANSI DECIMAL dan NUMERIC memetakan ke CString karena SQL_C_CHAR adalah jenis transfer ODBC default.

  2. Data karakter di luar 255 karakter dipotong secara default saat dipetakan ke CString. Anda dapat memperpanjang panjang pemotongan dengan secara eksplisit mengatur argumen nMaxLength dari RFX_Text.

  3. Data biner di luar 255 karakter dipotong secara default saat dipetakan ke CByteArray. Anda dapat memperpanjang panjang pemotongan dengan secara eksplisit mengatur argumen nMaxLength dari RFX_Binary.

Jika Anda tidak menggunakan pustaka kursor ODBC, Anda mungkin mengalami masalah saat mencoba memperbarui dua atau beberapa bidang panjang variabel yang panjang menggunakan driver ODBC Microsoft SQL Server dan kelas database MFC ODBC. Jenis ODBC, SQL_LONGVARCHAR dan SQL_LONGVARBINARY, memetakan ke jenis SQL Server teks dan gambar. CDBException A dilemparkan jika Anda memperbarui dua atau lebih bidang panjang variabel panjang pada panggilan yang sama ke CRecordset::Update. Oleh karena itu, jangan memperbarui beberapa kolom panjang secara bersamaan dengan CRecordset::Update. Anda dapat memperbarui beberapa kolom panjang secara bersamaan dengan ODBC API SQLPutData. Anda juga dapat menggunakan pustaka kursor ODBC, tetapi ini tidak disarankan untuk driver, seperti driver SQL Server, yang mendukung kursor dan tidak memerlukan pustaka kursor.

Jika Anda menggunakan pustaka kursor ODBC dengan kelas database ODBC MFC dan driver ODBC Microsoft SQL Server, ASSERT mungkin terjadi bersama dengan CDBException jika panggilan untuk CRecordset::Update mengikuti panggilan ke CRecordset::Requery. Sebagai gantinya, panggil CRecordset::Close dan CRecordset::Open bukan CRecordset::Requery. Solusi lain adalah tidak menggunakan pustaka kursor ODBC, karena SQL Server dan driver ODBC SQL Server memberikan dukungan asli untuk kursor secara asli dan pustaka kursor ODBC tidak diperlukan.

Baca juga

SQL
SQL: Melakukan Panggilan SQL Langsung (ODBC)