Bagikan melalui


Recordset: Cara Recordset Memilih Rekaman (ODBC)

Catatan

Wizard MFC ODBC Consumer tidak tersedia di Visual Studio 2019 dan yang lebih baru. Anda masih dapat membuat konsumen secara manual.

Topik ini berlaku untuk kelas MFC ODBC.

Topik ini menjelaskan:

Kumpulan rekaman memilih rekaman dari sumber data melalui driver ODBC dengan mengirim pernyataan SQL ke driver. SQL yang dikirim tergantung pada cara Anda merancang dan membuka kelas recordset Anda.

Opsi Anda dalam Memilih Rekaman

Tabel berikut ini memperlihatkan opsi Anda dalam memilih rekaman.

Bagaimana dan Kapan Anda Dapat Memengaruhi Kumpulan Rekaman

Ketika Anda Anda dapat
Mendeklarasikan kelas recordset Anda dengan wizard Tambahkan Kelas Tentukan tabel mana yang akan dipilih.

Tentukan kolom mana yang akan disertakan.

Lihat Menambahkan Konsumen MFC ODBC.
Menyelesaikan implementasi kelas recordset Anda Ambil alih fungsi anggota seperti OnSetOptions (tingkat lanjut) untuk mengatur opsi khusus aplikasi atau mengubah default. Tentukan anggota data parameter jika Anda menginginkan kumpulan rekaman berparameter.
Membuat objek recordset (sebelum Anda memanggil Open) Tentukan kondisi pencarian (mungkin majemuk) untuk digunakan dalam klausa WHERE yang memfilter rekaman. Lihat Recordset: Memfilter Rekaman (ODBC).

Tentukan urutan pengurutan untuk digunakan dalam klausa ORDER BY yang mengurutkan rekaman. Lihat Recordset: Mengurutkan Rekaman (ODBC).

Tentukan nilai parameter untuk parameter apa pun yang Anda tambahkan ke kelas . Lihat Recordset: Membuat parameter Recordset (ODBC).

|Jalankan kueri kumpulan rekaman dengan memanggil Open|Tentukan string SQL kustom untuk mengganti string SQL default yang disiapkan oleh wizard. Lihat CRecordset::Buka di Referensi Pustaka Kelas dan SQL: Menyesuaikan Pernyataan SQL Recordset Anda (ODBC).|

|Panggilan Requery untuk mengkueri ulang kumpulan rekaman dengan nilai terbaru pada sumber data|Tentukan parameter, filter, atau pengurutan baru. Lihat Recordset: Mengkueri ulang Recordset (ODBC).|

Bagaimana Recordset Membuat Pernyataan SQL-nya

Saat Anda memanggil fungsi Anggota terbuka objek recordset, Open buat pernyataan SQL menggunakan beberapa atau semua bahan berikut:

  • Parameter lpszSQL diteruskan ke Open. Jika bukan NULL, parameter ini menentukan string SQL kustom atau bagian dari satu. Kerangka kerja mengurai string. Jika string adalah pernyataan SQL SELECT atau pernyataan ODBC CALL , kerangka kerja menggunakan string sebagai pernyataan SQL recordset. Jika string tidak dimulai dengan "SELECT" atau "{CALL", kerangka kerja menggunakan apa yang disediakan untuk membuat klausa SQL FROM .

  • String yang dikembalikan oleh GetDefaultSQL. Secara default, ini adalah nama tabel yang Anda tentukan untuk kumpulan rekaman dalam wizard, tetapi Anda bisa mengubah apa yang dikembalikan fungsi. Kerangka kerja memanggil — jika string tidak dimulai dengan "SELECT" atau "{CALL", itu diasumsikan GetDefaultSQL sebagai nama tabel, yang digunakan untuk membuat string SQL.

  • Anggota data bidang dari himpunan rekaman, yang akan terikat ke kolom tabel tertentu. Kerangka kerja mengikat kolom rekaman ke alamat anggota ini, menggunakannya sebagai buffer. Kerangka kerja menentukan korelasi anggota data bidang ke kolom tabel dari fungsi RFX atau RFX Massal dalam fungsi anggota DoFieldExchange atau DoBulkFieldExchange kumpulan rekaman.

  • Filter untuk kumpulan rekaman, jika ada, yang terkandung dalam anggota data m_strFilter. Kerangka kerja menggunakan string ini untuk membuat klausa SQL WHERE .

  • Urutan pengurutan untuk kumpulan rekaman, jika ada, terkandung dalam anggota data m_strSort . Kerangka kerja menggunakan string ini untuk membuat klausa SQL ORDER BY .

    Tip

    Untuk menggunakan klausa SQL GROUP BY (dan mungkin klausul HAVING ), tambahkan klausa ke akhir string filter Anda.

  • Nilai anggota data parameter apa pun yang Anda tentukan untuk kelas tersebut. Anda mengatur nilai parameter tepat sebelum memanggil Open atau Requery. Kerangka kerja mengikat nilai parameter ke tempat penampung "?" dalam string SQL. Pada waktu kompilasi, Anda menentukan string dengan tempat penampung. Pada waktu proses, kerangka kerja mengisi detail berdasarkan nilai parameter yang Anda lewati.

Open membuat pernyataan SQL SELECT dari bahan-bahan ini. Lihat Menyesuaikan Pilihan untuk detail tentang cara kerangka kerja menggunakan bahan.

Setelah membuat pernyataan, Open mengirim SQL ke Manajer Driver ODBC (dan Pustaka Kursor ODBC jika dalam memori), yang mengirimkannya ke driver ODBC untuk DBMS tertentu. Driver berkomunikasi dengan DBMS untuk melakukan pemilihan pada sumber data dan mengambil rekaman pertama. Kerangka kerja memuat rekaman ke dalam anggota data bidang dari kumpulan rekaman.

Anda dapat menggunakan kombinasi teknik ini untuk membuka tabel dan membuat kueri berdasarkan gabungan beberapa tabel. Dengan kustomisasi tambahan, Anda dapat memanggil kueri yang telah ditentukan sebelumnya (prosedur tersimpan), memilih kolom tabel yang tidak diketahui pada waktu desain dan mengikatnya ke bidang kumpulan rekaman atau Anda dapat melakukan sebagian besar tugas akses data lainnya. Tugas yang tidak dapat Anda selesaikan dengan menyesuaikan kumpulan rekaman masih dapat dicapai dengan memanggil fungsi ODBC API atau langsung menjalankan pernyataan SQL dengan CDatabase::ExecuteSQL.

Menyesuaikan Pilihan

Selain menyediakan filter, urutan pengurutan, atau parameter, Anda dapat mengambil tindakan berikut untuk menyesuaikan pilihan kumpulan rekaman Anda:

  • Berikan string SQL kustom di lpszSQL saat Anda memanggil Buka untuk recordset. Apa pun yang Anda berikan di lpsqSQL lebih diutamakan daripada apa yang dikembalikan oleh fungsi anggota GetDefaultSQL .

    Untuk informasi selengkapnya, lihat SQL: Menyesuaikan Pernyataan SQL Recordset Anda (ODBC), yang menjelaskan jenis pernyataan SQL (atau pernyataan parsial) yang dapat Anda teruskan Open dan apa yang dilakukan kerangka kerja dengan mereka.

    Catatan

    Jika string kustom yang Anda lewati tidak dimulai dengan "SELECT" atau "{CALL", MFC mengasumsikan string tersebut berisi nama tabel. Ini juga berlaku untuk item berpoin berikutnya.

  • Ubah string yang ditulis wizard di fungsi anggota kumpulan rekaman GetDefaultSQL Anda. Edit kode fungsi untuk mengubah apa yang dikembalikannya. Secara default, wizard menulis GetDefaultSQL fungsi yang mengembalikan satu nama tabel.

    Anda dapat mengembalikan GetDefaultSQL salah satu item yang dapat Anda teruskan dalam parameter lpszSQL ke Open. Jika Anda tidak meneruskan string SQL kustom di lpszSQL, kerangka kerja menggunakan string yang GetDefaultSQL mengembalikan. Minimal, GetDefaultSQL harus mengembalikan satu nama tabel. Tetapi Anda dapat memintanya mengembalikan beberapa nama tabel, pernyataan SELECT lengkap, pernyataan ODBC CALL, dan sebagainya. Untuk daftar apa yang dapat Anda berikan ke lpszSQL — atau telah GetDefaultSQL kembali — lihat SQL: Menyesuaikan Pernyataan SQL Recordset Anda (ODBC).

    Jika Anda melakukan gabungan dua tabel atau lebih, tulis GetDefaultSQL ulang untuk mengkustomisasi daftar tabel yang digunakan dalam klausa SQL FROM . Untuk informasi selengkapnya, lihat Recordset: Melakukan Gabungan (ODBC).

  • Mengikat anggota data bidang tambahan secara manual, mungkin berdasarkan informasi yang Anda peroleh tentang skema sumber data Anda pada waktu proses. Anda menambahkan anggota data bidang ke kelas recordset, panggilan fungsi RFX atau RFX Massal untuk mereka ke fungsi anggota DoFieldExchange atau DoBulkFieldExchange , dan inisialisasi anggota data di konstruktor kelas. Untuk informasi selengkapnya, lihat Recordset: Dynamically Binding Data Columns (ODBC).

  • Ambil alih fungsi anggota kumpulan rekaman, seperti OnSetOptions, untuk mengatur opsi khusus aplikasi atau untuk mengambil alih default.

Jika Anda ingin mendasarkan kumpulan rekaman pada pernyataan SQL yang kompleks, Anda perlu menggunakan beberapa kombinasi teknik penyesuaian ini. Misalnya, mungkin Anda ingin menggunakan klausa dan kata kunci SQL yang tidak didukung langsung oleh kumpulan rekaman atau mungkin Anda bergabung dengan beberapa tabel.

Baca juga

Recordset (ODBC)
Recordset: Cara Rekaman Memperbarui Rekaman (ODBC)
Dasar-Dasar ODBC
SQL
Recordset: Mengunci Rekaman (ODBC)