Bagikan melalui


ODBC: Pustaka Kursor ODBC

Topik ini menjelaskan Pustaka Kursor ODBC dan menjelaskan cara menggunakannya. Untuk informasi selengkapnya, lihat:

Pustaka Kursor ODBC adalah pustaka tautan dinamis (DLL) yang berada antara Pengelola Driver ODBC dan driver. Dalam istilah ODBC, driver mempertahankan kursor untuk melacak posisinya di recordset. Kursor menandai posisi dalam kumpulan rekaman yang telah Anda gulir — rekaman saat ini.

Pustaka Kursor dan Driver ODBC Tingkat 1

Pustaka Kursor ODBC memberi driver Tingkat 1 kemampuan baru berikut:

  • Pengguliran maju dan mundur. Driver tingkat 2 tidak memerlukan pustaka kursor karena sudah dapat digulir.

  • Dukungan untuk rekam jepret. Pustaka kursor mengelola buffer yang berisi rekaman rekam jepret. Buffer ini mencerminkan penghapusan dan pengeditan program Anda ke rekaman tetapi bukan penambahan, penghapusan, atau pengeditan pengguna lain. Oleh karena itu, rekam jepret hanya saat ini sebagai buffer pustaka kursor. Buffer juga tidak mencerminkan penambahan Anda sendiri sampai Anda memanggil Requery. Dynasets tidak menggunakan pustaka kursor.

Pustaka kursor memberi Anda rekam jepret (kursor statis) meskipun biasanya tidak didukung oleh driver Anda. Jika driver Anda sudah mendukung kursor statis, Anda tidak perlu memuat pustaka kursor untuk mendapatkan dukungan rekam jepret. Jika Anda menggunakan pustaka kursor, Anda hanya dapat menggunakan rekam jepret dan kumpulan rekaman khusus terusan. Jika driver Anda mendukung dinaset (KEYSET_DRIVEN kursor) dan Anda ingin menggunakannya, Anda tidak boleh menggunakan pustaka kursor. Jika Anda ingin menggunakan rekam jepret dan dinaset, Anda harus mendasarkannya pada dua objek yang berbeda CDatabase (dua koneksi yang berbeda) kecuali driver Anda mendukung keduanya.

Pembaruan yang Diposisikan dan Kolom Tanda Waktu

Catatan

Sumber data ODBC dapat diakses melalui kelas ODBC MFC, seperti yang dijelaskan dalam topik ini, atau melalui kelas MFC Data Access Object (DAO).

Catatan

Jika driver ODBC Anda mendukung SQLSetPos, MFC mana yang digunakan jika tersedia, topik ini tidak berlaku untuk Anda.

Sebagian besar driver Tingkat 1 tidak mendukung pembaruan yang diposisikan. Driver tersebut mengandalkan pustaka kursor untuk meniru kemampuan driver Level 2 dalam hal ini. Pustaka kursor menimulasi dukungan pembaruan yang diposisikan dengan melakukan pembaruan yang dicari pada bidang yang tidak berubah.

Dalam beberapa kasus, kumpulan rekaman mungkin berisi kolom tanda waktu sebagai salah satu bidang yang tidak berubah. Dua masalah muncul dalam menggunakan kumpulan rekaman MFC dengan tabel yang berisi kolom tanda waktu.

Masalah pertama menyangkut rekam jepret yang dapat diperbarui pada tabel dengan kolom tanda waktu. Jika tabel tempat rekam jepret Anda terikat berisi kolom tanda waktu, Anda harus memanggil Requery setelah Anda memanggil Edit dan Update. Jika tidak, Anda mungkin tidak dapat mengedit rekaman yang sama lagi. Saat Anda memanggil Edit lalu Update, rekaman ditulis ke sumber data dan kolom tanda waktu diperbarui. Jika Anda tidak memanggil Requery, nilai tanda waktu untuk rekaman dalam rekam jepret Anda tidak lagi cocok dengan tanda waktu yang sesuai pada sumber data. Ketika Anda mencoba memperbarui rekaman lagi, sumber data mungkin melarang pembaruan karena ketidakcocokan.

Masalah kedua menyangkut batasan CTime kelas saat digunakan dengan RFX_Date fungsi untuk mentransfer waktu dan informasi tanggal ke atau dari tabel. CTime Memproses objek memberlakukan beberapa overhead dalam bentuk pemrosesan perantara ekstra selama transfer data. Rentang CTime tanggal objek mungkin juga terlalu membatasi untuk beberapa aplikasi. Versi RFX_Date baru fungsi mengambil parameter TIMESTAMP_STRUCT ODBC alih-alih CTime objek. Untuk informasi selengkapnya, lihat RFX_Date di Makro dan Global di Referensi MFC.

Menggunakan Pustaka Kursor

Saat Anda menyambungkan ke sumber data — dengan memanggil CDatabase::OpenEx atau CDatabase::Open — Anda dapat menentukan apakah akan menggunakan pustaka kursor untuk sumber data. Jika Anda akan membuat rekam jepret pada sumber data tersebut CDatabase::useCursorLibdwOptions , tentukan opsi dalam parameter ke OpenEx atau tentukan TRUE untuk parameter bUseCursorLib ke Open (nilai defaultnya adalah TRUE). Jika driver ODBC Anda mendukung dinaset dan Anda ingin membuka dinaset pada sumber data, jangan gunakan pustaka kursor (ini menutupi beberapa fungsionalitas driver yang diperlukan untuk dynaset). Dalam hal ini, jangan tentukan dalam OpenEx atau tentukan CDatabase::useCursorLib FALSE untuk parameter bUseCursorLib di .Open

Baca juga

Dasar-Dasar ODBC