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::useCursorLib
dwOptions
, 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk