Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menjelaskan dynaset dan membahas ketersediaannya
Catatan
Topik ini berlaku untuk kelas ODBC MFC, termasuk CRecordset. Untuk informasi tentang dinaset di kelas DAO, lihat CDaoRecordset. Dengan DAO, Anda dapat membuka kumpulan rekaman jenis dynaset.
Dinaset adalah kumpulan rekaman dengan properti dinamis. Selama masa pakainya, objek recordset dalam mode dynaset (biasanya disebut dynaset) tetap disinkronkan dengan sumber data dengan cara berikut. Di lingkungan multipengguna, pengguna lain mungkin mengedit atau menghapus rekaman yang ada di dinaset Anda atau menambahkan rekaman ke tabel yang diwakili dinaset Anda. Rekaman yang aplikasi Anda tambahkan atau hapus dari kumpulan rekaman tercermin dalam dynaset Anda. Rekaman yang ditambahkan pengguna lain ke tabel tidak akan tercermin dalam dynaset Anda hingga Anda membangun kembali dynaset tersebut dengan memanggil fungsi member-nya Requery. Saat pengguna lain menghapus rekaman, kode MFC melompati penghapusan di kumpulan rekaman Anda. Perubahan yang dilakukan pengguna lain pada catatan yang ada tercermin dalam kumpulan data dinamis Anda segera setelah Anda menggulir ke catatan yang bersangkutan.
Demikian pula, pengeditan yang Anda buat pada rekaman dalam dynaset tercermin dalam dynaset yang digunakan oleh pengguna lain. Rekaman yang Anda tambahkan tidak tercermin dalam dynaset pengguna lain hingga mereka melakukan kueri ulang pada dynaset mereka. Rekaman yang Anda hapus ditandai sebagai "dihapus" di kumpulan rekaman pengguna lain. Jika Anda memiliki beberapa koneksi ke database yang sama (beberapa CDatabase objek), kumpulan rekaman yang terkait dengan koneksi tersebut memiliki status yang sama dengan kumpulan rekaman pengguna lain.
Dynasets sangat berharga ketika data harus bersifat dinamis, contohnya dalam sistem reservasi maskapai penerbangan.
Catatan
Untuk menggunakan dynaset, Anda harus memiliki driver ODBC yang mendukung dynaset untuk sumber data Anda dan memastikan bahwa pustaka kursor ODBC tidak dimuat. Untuk informasi selengkapnya, lihat Ketersediaan Dynasets.
Untuk menentukan bahwa kumpulan rekaman adalah dynaset, teruskan CRecordset::dynaset sebagai parameter pertama ke Open pada fungsi anggota objek recordset Anda.
Catatan
Untuk dynaset yang dapat diperbarui, driver ODBC Anda harus mendukung pernyataan pembaruan berbasis posisi atau menggunakan fungsi API ODBC ::SQLSetPos. Jika keduanya didukung, MFC menggunakan ::SQLSetPos untuk efisiensi.
Ketersediaan Dynasets
Kelas database MFC mendukung kumpulan dinamis jika persyaratan berikut terpenuhi:
DLL pustaka kursor ODBC tidak boleh digunakan untuk sumber data ini.
Jika pustaka kursor digunakan, pustaka kursor menutupi beberapa fungsionalitas driver ODBC yang mendasarinya yang diperlukan untuk dukungan dynaset. Jika Anda ingin menggunakan dinaset (dan driver ODBC Anda memiliki fungsionalitas yang diperlukan untuk dinaset, seperti yang dijelaskan di bagian ini), Anda dapat membuat MFC tidak memuat pustaka kursor saat Anda membuat objek
CDatabase. Untuk informasi selengkapnya, lihat ODBC dan fungsi anggota OpenEx atau Open dari kelasCDatabase.Dalam terminologi ODBC, dinaset dan rekam jepret disebut sebagai kursor. Kursor adalah mekanisme yang digunakan untuk melacak posisinya dalam kumpulan rekaman.
Driver ODBC untuk sumber data Anda harus mendukung kursor berbasis keyset.
Kursor berbasis set kunci mengelola data dari tabel dengan mendapatkan dan menyimpan sekumpulan kunci. Kunci digunakan untuk mendapatkan data saat ini dari tabel saat pengguna menggulir ke rekaman tertentu. Untuk menentukan apakah driver Anda menyediakan dukungan ini, panggil
::SQLGetInfofungsi ODBC API dengan parameter SQL_SCROLL_OPTIONS .Jika Anda mencoba membuka dynaset tanpa dukungan keyset, Anda mendapatkan
CDBExceptiondengan nilai kode pengembalian AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED.Driver ODBC untuk sumber data Anda harus mendukung pengambilan yang diperluas.
Pengambilan data diperluas adalah kemampuan untuk menggulir ke belakang dan ke depan pada rekaman hasil kueri SQL Anda. Untuk menentukan apakah driver Anda mendukung kemampuan ini, panggil
::SQLGetFunctionsfungsi ODBC API dengan parameter SQL_API_SQLEXTENDEDFETCH .
Jika Anda ingin dynaset yang dapat diperbarui (atau rekaman jepret, dalam hal ini), driver ODBC Anda juga harus mendukung fungsi ODBC API ::SQLSetPos atau pembaruan yang diposisikan. Fungsi ini ::SQLSetPos memungkinkan MFC memperbarui sumber data tanpa mengirim pernyataan SQL. Jika dukungan ini tersedia, MFC menggunakannya sebagai preferensi untuk membuat pembaruan menggunakan SQL. Untuk menentukan apakah driver Anda mendukung ::SQLSetPos, panggil ::SQLGetInfo dengan parameter SQL_POS_OPERATIONS .
Pembaruan yang diposisikan menggunakan sintaks SQL (dari formulir WHERE CURRENT OF<cursorname>) untuk mengidentifikasi baris tertentu dalam tabel pada sumber data. Untuk menentukan apakah driver Anda mendukung pembaruan yang diposisikan, panggil ::SQLGetInfo dengan parameter SQL_POSITIONED_STATEMENTS .
Umumnya, dynaset MFC (tetapi bukan set catatan forward-only) memerlukan driver ODBC dengan kesesuaian API tingkat 2. Jika driver untuk sumber data Anda sesuai dengan set API tingkat 1, Anda masih dapat menggunakan cuplikan yang dapat diperbarui dan baca-saja serta himpunan rekaman maju-saja, tetapi bukan dynaset. Namun, driver tingkat 1 dapat mendukung dinaset jika mendukung pengambilan data yang diperluas dan kursor yang digerakkan oleh set kunci. Untuk informasi selengkapnya tentang tingkat kesuaian ODBC, lihat ODBC.
Catatan
Jika Anda ingin menggunakan snapshot dan dynaset, Anda harus mendasarkannya pada dua objek CDatabase yang berbeda (dua koneksi yang berbeda).
Tidak seperti rekam jepret, yang menggunakan penyimpanan menengah yang dikelola oleh pustaka kursor ODBC, dinaset mengambil rekaman langsung dari sumber data segera setelah Anda menggulirnya. Ini menjaga rekaman yang awalnya dipilih dari dynaset agar tetap disinkronkan dengan sumber data.
Untuk daftar driver ODBC yang disertakan dalam versi Visual C++ ini dan untuk informasi tentang mendapatkan driver tambahan, lihat Daftar Driver ODBC.