Bagikan melalui


Recordset: Bekerja dengan Item Data Besar (ODBC)

Topik ini berlaku untuk kelas MFC ODBC dan kelas MFC DAO.

Catatan

Jika Anda menggunakan kelas MFC DAO, kelola item data besar Anda dengan kelas CByteArray daripada kelas CLongBinary. Jika Anda menggunakan kelas ODBC MFC dengan pengambilan baris massal, gunakan CLongBinary alih-alih CByteArray. Untuk informasi selengkapnya tentang pengambilan baris massal, lihat Recordset: Mengambil Rekaman secara Massal (ODBC).

Misalkan database Anda dapat menyimpan sebagian besar data, seperti bitmap (foto karyawan, peta, gambar produk, objek OLE, dan sebagainya). Data semacam ini sering disebut sebagai Objek Besar Biner (atau BLOB) karena:

  • Setiap nilai bidang besar.

  • Tidak seperti angka dan jenis data sederhana lainnya, tidak memiliki ukuran yang dapat diprediksi.

  • Data tidak berbentuk dari perspektif program Anda.

Topik ini menjelaskan apa yang disediakan kelas database untuk bekerja dengan objek tersebut.

Mengelola Objek Besar

Recordset memiliki dua cara untuk menyelesaikan kesulitan khusus dalam mengelola objek besar biner. Anda dapat menggunakan kelas CByteArray atau Anda dapat menggunakan kelas CLongBinary. Secara umum, CByteArray adalah cara yang disukai untuk mengelola data biner besar.

CByteArray membutuhkan lebih banyak overhead daripada CLongBinary tetapi lebih mampu, seperti yang dijelaskan dalam Kelas CByteArray. CLongBinary dijelaskan secara singkat di Kelas CLongBinary.

Untuk informasi terperinci tentang menggunakan CByteArray untuk bekerja dengan item data besar, lihat Catatan Teknis 45.

Kelas CByteArray

CByteArray adalah salah satu kelas koleksi MFC. Objek CByteArray menyimpan array byte dinamis — array dapat tumbuh jika diperlukan. Kelas ini menyediakan akses cepat menurut indeks, seperti halnya array C++ bawaan. CByteArray objek dapat diserialisasikan dan dibuang untuk tujuan diagnostik. Kelas menyediakan fungsi anggota untuk mendapatkan dan mengatur byte yang ditentukan, menyisipkan dan menambahkan byte, dan menghapus satu byte atau semua byte. Fasilitas ini mempermudah penguraian data biner. Misalnya, jika objek biner adalah objek OLE, Anda mungkin harus bekerja melalui beberapa byte header untuk mencapai objek aktual.

Menggunakan CByteArray di Recordsets

Dengan memberi anggota data bidang jenis CByteArrayhimpunan data Anda , Anda menyediakan basis tetap dari mana RFX dapat mengelola transfer objek tersebut antara set rekaman Anda dan sumber data dan di mana Anda dapat memanipulasi data di dalam objek. RFX memerlukan situs tertentu untuk data yang diambil, dan Anda memerlukan cara untuk mengakses data yang mendasar.

Untuk informasi terperinci tentang menggunakan CByteArray untuk bekerja dengan item data besar, lihat Catatan Teknis 45.

Kelas CLongBinary

Objek CLongBinary adalah shell sederhana di sekitar HGLOBAL handel ke blok penyimpanan yang dialokasikan pada tumpukan. Saat mengikat kolom tabel yang berisi objek besar biner, RFX mengalokasikan HGLOBAL handel saat perlu mentransfer data ke kumpulan rekaman dan menyimpan handel di CLongBinary bidang kumpulan rekaman.

Pada gilirannya HGLOBAL , Anda menggunakan handel, m_hData, untuk bekerja dengan data itu sendiri, beroperasi di atasnya seperti yang Anda lakukan pada data penanganan apa pun. Di sinilah CByteArray menambahkan kemampuan.

Perhatian

Objek CLongBinary tidak dapat digunakan sebagai parameter dalam panggilan fungsi. Selain itu, implementasinya, yang memanggil ::SQLGetData, selalu memperlambat performa gulir untuk rekam jepret yang dapat digulir. Ini mungkin juga benar ketika Anda menggunakan ::SQLGetData panggilan sendiri untuk mengambil kolom skema dinamis.

Baca juga

Recordset (ODBC)
Recordset: Mendapatkan SUM dan Hasil Agregat Lainnya (ODBC)
Pertukaran Bidang Rekaman (RFX)