Bagikan melalui


Kelas CDaoDatabase

Mewakili koneksi ke database Access menggunakan Objek Akses Data (DAO). DAO didukung melalui Office 2013. DAO 3.6 adalah versi akhir, dan dianggap usang.

Sintaks

class CDaoDatabase : public CObject

Anggota

Konstruktor Publik

Nama Deskripsi
CDaoDatabase::CDaoDatabase Membuat CDaoDatabase objek. Panggil Open untuk menyambungkan objek ke database.

Metode Publik

Nama Deskripsi
CDaoDatabase::CanTransact Mengembalikan nonzero jika database mendukung transaksi.
CDaoDatabase::CanUpdate Mengembalikan nonzero jika objek dapat diperbarui CDaoDatabase (bukan baca-saja).
CDaoDatabase::Close Menutup koneksi database.
CDaoDatabase::Create Membuat objek database DAO yang mendasar CDaoDatabase dan menginisialisasi objek.
CDaoDatabase::CreateRelation Menentukan hubungan baru di antara tabel dalam database.
CDaoDatabase::D eleteQueryDef Menghapus objek querydef yang disimpan dalam kumpulan QueryDefs database.
CDaoDatabase::D eleteRelation Menghapus relasi yang sudah ada antar tabel dalam database.
CDaoDatabase::D eleteTableDef Menghapus definisi tabel dalam database. Ini menghapus tabel aktual dan semua datanya.
CDaoDatabase::Execute Menjalankan kueri tindakan. Memanggil Execute kueri yang mengembalikan hasil akan melemparkan pengecualian.
CDaoDatabase::Dapatkan Koneksi Mengembalikan string koneksi yang digunakan untuk menyambungkan CDaoDatabase objek ke database. Digunakan untuk ODBC.
CDaoDatabase::GetName Mengembalikan nama database yang saat ini digunakan.
CDaoDatabase::GetQueryDefCount Mengembalikan jumlah kueri yang ditentukan untuk database.
CDaoDatabase::GetQueryDefInfo Mengembalikan informasi tentang kueri tertentu yang ditentukan dalam database.
CDaoDatabase::GetQueryTimeout Mengembalikan jumlah detik setelah operasi kueri database akan kehabisan waktu. Mempengaruhi semua operasi buka, tambahkan baru, perbarui, dan edit berikutnya dan operasi lain pada sumber data ODBC (hanya) seperti Execute panggilan.
CDaoDatabase::GetRecordsAffected Mengembalikan jumlah rekaman yang terpengaruh oleh pembaruan terakhir, edit, atau tambahkan operasi atau dengan panggilan ke Execute.
CDaoDatabase::GetRelationCount Mengembalikan jumlah relasi yang ditentukan di antara tabel dalam database.
CDaoDatabase::GetRelationInfo Mengembalikan informasi tentang relasi tertentu yang ditentukan antara tabel dalam database.
CDaoDatabase::GetTableDefCount Mengembalikan jumlah tabel yang ditentukan dalam database.
CDaoDatabase::GetTableDefInfo Mengembalikan informasi tentang tabel tertentu dalam database.
CDaoDatabase::GetVersion Mengembalikan versi mesin database yang terkait dengan database.
CDaoDatabase::IsOpen Mengembalikan nonzero jika CDaoDatabase objek saat ini tersambung ke database.
CDaoDatabase::Buka Membuat koneksi ke database.
CDaoDatabase::SetQueryTimeout Mengatur jumlah detik setelah operasi kueri database (hanya pada sumber data ODBC) akan kehabisan waktu. Mempengaruhi semua operasi buka, tambahkan baru, perbarui, dan hapus berikutnya.

Anggota Data Publik

Nama Deskripsi
CDaoDatabase::m_pDAODatabase Penunjuk ke objek database DAO yang mendasar.
CDaoDatabase::m_pWorkspace Penunjuk ke objek CDaoWorkspace yang berisi database dan menentukan ruang transaksinya.

Keterangan

Untuk informasi tentang format database yang didukung, lihat fungsi anggota GetName . Anda dapat memiliki satu atau beberapa CDaoDatabase objek aktif pada satu waktu di "ruang kerja" tertentu, yang diwakili oleh objek CDaoWorkspace . Ruang kerja mempertahankan kumpulan objek database terbuka, yang disebut kumpulan Database.

Penggunaan

Anda dapat membuat objek database secara implisit, saat Membuat objek kumpulan rekaman. Tetapi Anda juga dapat membuat objek database secara eksplisit. Untuk menggunakan database yang sudah ada secara eksplisit dengan CDaoDatabase, lakukan salah satu hal berikut ini:

  • CDaoDatabase Buat objek, meneruskan penunjuk ke objek CDaoWorkspace yang terbuka.

  • Atau buat CDaoDatabase objek tanpa menentukan ruang kerja (MFC membuat objek ruang kerja sementara).

Untuk membuat Microsoft Jet baru (. Database MDB), buat CDaoDatabase objek dan panggil fungsi Buat anggotanya. Jangan panggil Open setelah Create.

Untuk membuka database yang sudah ada, buat CDaoDatabase objek dan panggil fungsi Anggota terbukanya.

Salah satu teknik ini menambahkan objek database DAO ke koleksi Database ruang kerja dan membuka koneksi ke data. Ketika Anda kemudian membuat objek CDaoRecordset, CDaoTableDef, atau CDaoQueryDef untuk beroperasi pada database yang terhubung, teruskan konstruktor untuk objek ini penunjuk ke objek Anda CDaoDatabase . Setelah Anda selesai menggunakan koneksi, panggil fungsi Tutup anggota dan hancurkan CDaoDatabase objek. Close menutup kumpulan rekaman apa pun yang belum Anda tutup sebelumnya.

Transaksi

Pemrosesan transaksi database disediakan di tingkat ruang kerja — lihat fungsi anggota BeginTrans, CommitTrans, dan Rollback kelas CDaoWorkspace.

Koneksi ODBC

Cara yang disarankan untuk bekerja dengan sumber data ODBC adalah dengan melampirkan tabel eksternal ke Microsoft Jet (. Database MDB).

Koleksi

Setiap database mempertahankan koleksi tabledef, querydef, recordset, dan objek relasinya sendiri. Kelas CDaoDatabase memasok fungsi anggota untuk memanipulasi objek-objek ini.

Catatan

Objek disimpan di DAO, bukan di objek database MFC. MFC menyediakan kelas untuk objek tabledef, querydef, dan recordset tetapi tidak untuk objek relasi.

Hierarki Warisan

CObject

CDaoDatabase

Persyaratan

Header: afxdao.h

CDaoDatabase::CanTransact

Panggil fungsi anggota ini untuk menentukan apakah database mengizinkan transaksi.

BOOL CanTransact();

Tampilkan Nilai

Nonzero jika database mendukung transaksi; jika tidak, 0.

Keterangan

Transaksi dikelola di ruang kerja database.

CDaoDatabase::CanUpdate

Panggil fungsi anggota ini untuk menentukan apakah objek mengizinkan CDaoDatabase pembaruan.

BOOL CanUpdate();

Tampilkan Nilai

Bukan nol jika CDaoDatabase objek memungkinkan pembaruan; jika tidak, 0, menunjukkan bahwa Anda melewati TRUE di bReadOnly saat Anda membuka CDaoDatabase objek atau bahwa database itu sendiri bersifat baca-saja. Lihat fungsi Anggota terbuka.

Keterangan

Untuk informasi tentang pembaruan database, lihat topik "Properti yang Dapat Diperbarui" di Bantuan DAO.

CDaoDatabase::CDaoDatabase

Membuat CDaoDatabase objek.

CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);

Parameter

pWorkspace
Penunjuk ke CDaoWorkspace objek yang akan berisi objek database baru. Jika Anda menerima nilai default NULL, konstruktor membuat objek sementara CDaoWorkspace yang menggunakan ruang kerja DAO default. Anda bisa mendapatkan penunjuk ke objek ruang kerja melalui anggota data m_pWorkspace .

Keterangan

Setelah membuat objek, jika Anda membuat Microsoft Jet baru (. Database MDB), panggil fungsi Buat anggota objek. Jika Anda, sebagai gantinya, membuka database yang sudah ada, panggil fungsi Anggota terbuka objek.

Setelah selesai dengan objek, Anda harus memanggil fungsi Tutup anggotanya lalu menghancurkan CDaoDatabase objek.

Anda mungkin merasa nyaman untuk menyematkan CDaoDatabase objek di kelas dokumen Anda.

Catatan

Objek CDaoDatabase juga dibuat secara implisit jika Anda membuka objek CDaoRecordset tanpa meneruskan penunjuk ke objek yang ada CDaoDatabase . Objek database ini ditutup saat Anda menutup objek kumpulan rekaman.

CDaoDatabase::Close

Panggil fungsi anggota ini untuk memutuskan sambungan dari database dan menutup kumpulan rekaman terbuka, tabledefs, dan querydef yang terkait dengan database.

virtual void Close();

Keterangan

Adalah praktik yang baik untuk menutup objek-objek ini sendiri sebelum Anda memanggil fungsi anggota ini. CDaoDatabase Menutup objek akan menghapusnya dari kumpulan Database di ruang kerja terkait. Karena Close tidak menghancurkan CDaoDatabase objek, Anda dapat menggunakan kembali objek dengan membuka database yang sama atau database yang berbeda.

Perhatian

Panggil fungsi Perbarui anggota (jika ada pengeditan yang tertunda) dan Close fungsi anggota pada semua objek kumpulan rekaman terbuka sebelum Anda menutup database. Jika Anda keluar dari fungsi yang mendeklarasikan CDaoRecordset atau CDaoDatabase objek pada tumpukan, database ditutup, perubahan yang belum disimpan hilang, semua transaksi yang tertunda digulung balik, dan pengeditan tertunda ke data Anda hilang.

Perhatian

Jika Anda mencoba menutup objek database saat objek kumpulan rekaman terbuka, atau jika Anda mencoba menutup objek ruang kerja sementara objek database milik ruang kerja tertentu terbuka, objek kumpulan rekaman tersebut akan ditutup dan pembaruan atau pengeditan yang tertunda akan digulung balik. Jika Anda mencoba menutup objek ruang kerja saat objek database miliknya terbuka, operasi menutup semua objek database milik objek ruang kerja tertentu tersebut, yang dapat mengakibatkan objek kumpulan rekaman yang tidak tertutup ditutup. Jika Anda tidak menutup objek database, MFC melaporkan kegagalan pernyataan dalam build debug.

Jika objek database didefinisikan di luar cakupan fungsi, dan Anda keluar dari fungsi tanpa menutupnya, objek database akan tetap terbuka sampai ditutup secara eksplisit atau modul di mana itu didefinisikan berada di luar cakupan.

CDaoDatabase::Create

Untuk membuat Microsoft Jet baru (. Database MDB), panggil fungsi anggota ini setelah Anda membuat CDaoDatabase objek.

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszLocale = dbLangGeneral,
    int dwOptions = 0);

Parameter

lpszName
Ekspresi string yang merupakan nama file database yang Anda buat. Ini bisa menjadi jalur lengkap dan nama file, seperti "C:\\MYDB. MDB". Anda harus memberikan nama. Jika Anda tidak menyediakan ekstensi nama file, . MDB ditambahkan. Jika jaringan Anda mendukung konvensi penamaan seragam (UNC), Anda juga dapat menentukan jalur jaringan, seperti "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB". Hanya Microsoft Jet (. File database MDB) dapat dibuat menggunakan fungsi anggota ini. (Garis miring terbelakang ganda diperlukan dalam literal string karena "\" adalah karakter escape C++.)

lpszLocale
Ekspresi string yang digunakan untuk menentukan susunan kolater untuk membuat database. Nilai defaultnya adalah dbLangGeneral. Kemungkinan nilai adalah:

  • dbLangGeneral Inggris, Jerman, Prancis, Portugis, Italia, dan Spanyol Modern

  • dbLangArabic Arab

  • dbLangCyrillic Rusia

  • dbLangCzech Ceko

  • dbLangDutch Belanda

  • dbLangGreek Yunani

  • dbLangHebrew Ibrani

  • dbLangHungarian Hongaria

  • dbLangIcelandic Islandia

  • dbLangNordic Bahasa Nordik (hanya mesin database Microsoft Jet versi 1.0)

  • dbLangNorwdan Norwegia dan Denmark

  • dbLangPolish Polandia

  • dbLangSpanish Bahasa Spanyol Tradisional

  • dbLangSwedfin Bahasa Swedia dan Finlandia

  • dbLangTurkish Turki

dwOptions
Bilangan bulat yang menunjukkan satu atau beberapa opsi. Kemungkinan nilai adalah:

  • dbEncrypt Membuat database terenkripsi.

  • dbVersion10 Buat database dengan database Microsoft Jet versi 1.0.

  • dbVersion11 Buat database dengan database Microsoft Jet versi 1.1.

  • dbVersion20 Buat database dengan database Microsoft Jet versi 2.0.

  • dbVersion30 Buat database dengan database Microsoft Jet versi 3.0.

Jika Anda menghilangkan konstanta enkripsi, database yang tidak terenkripsi akan dibuat. Anda hanya dapat menentukan satu konstanta versi. Jika Anda menghilangkan konstanta versi, database yang menggunakan database Microsoft Jet versi 3.0 dibuat.

Perhatian

Jika database tidak dienkripsi, dimungkinkan, bahkan jika Anda menerapkan keamanan pengguna/kata sandi, untuk langsung membaca file disk biner yang merupakan database.

Keterangan

Create membuat file database dan objek database DAO yang mendasar dan menginisialisasi objek C++. Objek ditambahkan ke koleksi Database ruang kerja terkait. Objek database dalam status terbuka; jangan panggil Open* setelah Create.

Catatan

Dengan Create, Anda hanya dapat membuat Microsoft Jet (. Database MDB). Anda tidak dapat membuat database ISAM atau database ODBC.

CDaoDatabase::CreateRelation

Panggil fungsi anggota ini untuk membuat hubungan antara satu atau beberapa bidang dalam tabel utama dalam database dan satu atau beberapa bidang dalam tabel asing (tabel lain dalam database).

void CreateRelation(
    LPCTSTR lpszName,
    LPCTSTR lpszTable,
    LPCTSTR lpszForeignTable,
    long lAttributes,
    LPCTSTR lpszField,
    LPCTSTR lpszForeignField);

void CreateRelation(CDaoRelationInfo& relinfo);

Parameter

lpszName
Nama unik objek relasi. Nama harus dimulai dengan huruf dan dapat berisi maksimal 40 karakter. Ini dapat mencakup angka dan karakter garis bawah tetapi tidak dapat menyertakan tanda baca atau spasi.

lpszTable
Nama tabel utama dalam relasi. Jika tabel tidak ada, MFC melemparkan pengecualian jenis CDaoException.

lpszForeignTable
Nama tabel asing dalam hubungan. Jika tabel tidak ada, MFC melempar pengecualian jenis CDaoException.

lAttributes
Nilai panjang yang berisi informasi tentang jenis hubungan. Anda dapat menggunakan nilai ini untuk memberlakukan integritas referensial, antara lain. Anda dapat menggunakan operator bitwise-OR (|) untuk menggabungkan salah satu nilai berikut (selama kombinasinya masuk akal):

  • dbRelationUnique Hubungan adalah satu-ke-satu.

  • dbRelationDontEnforce Hubungan tidak diberlakukan (tidak ada integritas referensial).

  • dbRelationInherited Hubungan ada dalam database noncurrent yang berisi dua tabel terlampir.

  • dbRelationUpdateCascade Pembaruan akan berskala (untuk informasi selengkapnya tentang kaskade, lihat Komentar).

  • dbRelationDeleteCascade Penghapusan akan kaskade.

lpszField
Penunjuk ke string yang dihentikan null yang berisi nama bidang dalam tabel utama (dinamai oleh lpszTable).

lpszForeignField
Penunjuk ke string null-terminated yang berisi nama bidang dalam tabel asing (dinamai oleh lpszForeignTable).

relinfo
Referensi ke objek CDaoRelationInfo yang berisi informasi tentang hubungan yang ingin Anda buat.

Keterangan

Hubungan tidak dapat melibatkan kueri atau tabel terlampir dari database eksternal.

Gunakan versi pertama fungsi saat hubungan melibatkan satu bidang di masing-masing dari dua tabel. Gunakan versi kedua saat hubungan melibatkan beberapa bidang. Jumlah maksimum bidang dalam relasi adalah 14.

Tindakan ini membuat objek relasi DAO yang mendasarinya, tetapi ini adalah detail implementasi MFC karena enkapsulasi objek relasi MFC terkandung dalam kelas CDaoDatabase. MFC tidak menyediakan kelas untuk hubungan.

Jika Anda mengatur atribut objek relasi untuk mengaktifkan operasi bertingkat, mesin database secara otomatis memperbarui atau menghapus rekaman dalam satu atau beberapa tabel lain saat perubahan dilakukan pada tabel kunci utama terkait.

Misalnya, Anda membuat hubungan penghapusan kaskade antara tabel Pelanggan dan tabel Pesanan. Saat Anda menghapus rekaman dari tabel Pelanggan, rekaman dalam tabel Pesanan yang terkait dengan pelanggan tersebut juga dihapus. Selain itu, jika Anda membuat hubungan penghapusan kaskade antara tabel Pesanan dan tabel lainnya, rekaman dari tabel tersebut akan dihapus secara otomatis saat Anda menghapus rekaman dari tabel Pelanggan.

Untuk informasi terkait, lihat topik "Metode CreateRelation" di Bantuan DAO.

CDaoDatabase::D eleteQueryDef

Panggil fungsi anggota ini untuk menghapus querydef yang ditentukan — kueri tersimpan — dari CDaoDatabase koleksi QueryDefs objek.

void DeleteQueryDef(LPCTSTR lpszName);

Parameter

lpszName
Nama kueri yang disimpan untuk dihapus.

Keterangan

Setelah itu, kueri tersebut tidak lagi ditentukan dalam database.

Untuk informasi tentang membuat objek querydef, lihat kelas CDaoQueryDef. Objek querydef menjadi terkait dengan objek tertentu CDaoDatabase saat Anda membuat CDaoQueryDef objek, meneruskannya penunjuk ke objek database.

CDaoDatabase::D eleteRelation

Panggil fungsi anggota ini untuk menghapus relasi yang ada dari kumpulan Relasi objek database.

void DeleteRelation(LPCTSTR lpszName);

Parameter

lpszName
Nama relasi yang akan dihapus.

Keterangan

Setelah itu, hubungan tidak ada lagi.

Untuk informasi terkait, lihat topik "Hapus Metode" di Bantuan DAO.

CDaoDatabase::D eleteTableDef

Panggil fungsi anggota ini untuk menghapus tabel yang ditentukan dan semua datanya dari CDaoDatabase koleksi TableDefs objek.

void DeleteTableDef(LPCTSTR lpszName);

Parameter

lpszName
Nama tabledef yang akan dihapus.

Keterangan

Setelah itu, tabel tersebut tidak lagi ditentukan dalam database.

Catatan

Berhati-hatilah untuk tidak menghapus tabel sistem.

Untuk informasi tentang membuat objek tabledef, lihat kelas CDaoTableDef. Objek tabledef menjadi terkait dengan objek tertentu CDaoDatabase saat Anda membuat CDaoTableDef objek, meneruskannya penunjuk ke objek database.

Untuk informasi terkait, lihat topik "Hapus Metode" di Bantuan DAO.

CDaoDatabase::Execute

Panggil fungsi anggota ini untuk menjalankan kueri tindakan atau menjalankan pernyataan SQL pada database.

void Execute(
    LPCTSTR lpszSQL,
    int nOptions = dbFailOnError);

Parameter

lpszSQL
Penunjuk ke string null-terminated yang berisi perintah SQL yang valid untuk dijalankan.

nOptions
Bilangan bulat yang menentukan opsi yang berkaitan dengan integritas kueri. Anda dapat menggunakan operator bitwise-OR (|) untuk menggabungkan salah satu konstanta berikut (asalkan kombinasinya masuk akal — misalnya, Anda tidak akan menggabungkan dbInconsistent dengan dbConsistent):

  • dbDenyWrite Tolak izin tulis ke pengguna lain.

  • dbInconsistent (Default) Pembaruan yang tidak konsisten.

  • dbConsistent Pembaruan yang konsisten.

  • dbSQLPassThrough Pass-through SQL. Menyebabkan pernyataan SQL diteruskan ke sumber data ODBC untuk diproses.

  • dbFailOnError Gulung balik pembaruan jika terjadi kesalahan.

  • dbSeeChanges Buat kesalahan run-time jika pengguna lain mengubah data yang Sedang Anda edit.

Catatan

Jika dan dbInconsistentdbConsistent disertakan atau jika tidak disertakan, hasilnya adalah default. Untuk penjelasan tentang konstanta ini, lihat topik "Metode Eksekusi" di Bantuan DAO.

Keterangan

Execute hanya berfungsi untuk kueri tindakan atau kueri pass-through SQL yang tidak mengembalikan hasil. Ini tidak berfungsi untuk kueri tertentu, yang mengembalikan rekaman.

Untuk definisi dan informasi tentang kueri tindakan, lihat topik "Kueri Tindakan" dan "Metode Eksekusi" di Bantuan DAO.

Tip

Mengingat pernyataan SQL yang benar secara sintetis dan izin yang tepat, Execute fungsi anggota tidak akan gagal meskipun tidak ada satu baris pun yang dapat dimodifikasi atau dihapus. Oleh karena itu, selalu gunakan dbFailOnError opsi saat menggunakan Execute fungsi anggota untuk menjalankan kueri pembaruan atau penghapusan. Opsi ini menyebabkan MFC melemparkan pengecualian jenis CDaoException dan mengembalikan semua perubahan yang berhasil jika salah satu rekaman yang terpengaruh terkunci dan tidak dapat diperbarui atau dihapus. Perhatikan bahwa Anda selalu dapat memanggil GetRecordsAffected untuk melihat berapa banyak rekaman yang terpengaruh.

Panggil fungsi anggota GetRecordsAffected dari objek database untuk menentukan jumlah rekaman yang terpengaruh oleh panggilan terbaruExecute. Misalnya, GetRecordsAffected mengembalikan informasi tentang jumlah rekaman yang dihapus, diperbarui, atau disisipkan saat menjalankan kueri tindakan. Jumlah yang dikembalikan tidak akan mencerminkan perubahan dalam tabel terkait saat pembaruan atau penghapusan berskala berlaku.

Execute tidak mengembalikan recordset. Menggunakan Execute pada kueri yang memilih rekaman menyebabkan MFC melemparkan pengecualian jenis CDaoException. (Tidak ada ExecuteSQL fungsi anggota yang dianalogikan dengan CDatabase::ExecuteSQL.)

CDaoDatabase::Dapatkan Koneksi

Panggil fungsi anggota ini untuk mengambil string koneksi yang digunakan untuk menyambungkan CDaoDatabase objek ke database ODBC atau ISAM.

CString GetConnect();

Tampilkan Nilai

string koneksi jika Buka berhasil dipanggil pada sumber data ODBC; jika tidak, string kosong. Untuk Microsoft Jet (. Database MDB), string selalu kosong kecuali Anda mengaturnya untuk digunakan dengan dbSQLPassThrough opsi yang digunakan dengan fungsi Jalankan anggota atau digunakan dalam membuka kumpulan rekaman.

Keterangan

String menyediakan informasi tentang sumber database terbuka atau database yang digunakan dalam kueri pass-through. string koneksi terdiri dari penentu jenis database dan nol parameter atau lebih yang dipisahkan oleh titik koma.

Catatan

Menggunakan kelas MFC DAO untuk menyambungkan ke sumber data melalui ODBC kurang efisien daripada menyambungkan melalui tabel terlampir.

Catatan

string koneksi digunakan untuk meneruskan informasi tambahan ke ODBC dan driver ISAM tertentu sesuai kebutuhan. Ini tidak digunakan untuk . Database MDB. Untuk tabel dasar database Microsoft Jet, string koneksi adalah string kosong ("") kecuali saat Anda menggunakannya untuk kueri pass-through SQL seperti yang dijelaskan di bawah Nilai Pengembalian di atas.

Lihat fungsi Anggota terbuka untuk deskripsi tentang cara string koneksi dibuat. Setelah string koneksi diatur dalam Open panggilan, Anda nantinya dapat menggunakannya untuk memeriksa pengaturan untuk menentukan jenis, jalur, ID pengguna, Kata Sandi, atau sumber data ODBC database.

CDaoDatabase::GetName

Panggil fungsi anggota ini untuk mengambil nama database yang saat ini terbuka, yang merupakan nama file database yang ada atau nama sumber data ODBC terdaftar.

CString GetName();

Tampilkan Nilai

Jalur lengkap dan nama file database jika berhasil; jika tidak, CString kosong.

Keterangan

Jika jaringan Anda mendukung konvensi penamaan seragam (UNC), Anda juga dapat menentukan jalur jaringan—misalnya, "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Garis miring terbelakang ganda diperlukan dalam literal string karena "\" adalah karakter escape C++.)

Misalnya, Anda mungkin ingin menampilkan nama ini dalam judul. Jika terjadi kesalahan saat nama sedang diambil, MFC melemparkan pengecualian jenis CDaoException.

Catatan

Untuk performa yang lebih baik saat database eksternal diakses, kami sarankan Anda melampirkan tabel database eksternal ke database Microsoft Jet (. MDB) daripada menyambungkan langsung ke sumber data.

Jenis database ditunjukkan oleh file atau direktori yang ditunjukkan jalur, sebagai berikut:

Nama jalur menunjuk ke.. Jenis Database
. File MDB Microsoft Jet database (Microsoft Access)
Direktori yang berisi . File DBF database dBASE
Direktori yang berisi file .XLS Database Microsoft Excel
Direktori yang berisi . File PDX Database paradoks
Direktori yang berisi file database teks yang diformat dengan tepat Database format teks

Untuk database ODBC seperti SQL Server dan Oracle, string koneksi database mengidentifikasi nama sumber data (DSN) yang didaftarkan oleh ODBC.

CDaoDatabase::GetQueryDefCount

Panggil fungsi anggota ini untuk mengambil jumlah kueri yang ditentukan dalam kumpulan QueryDefs database.

short GetQueryDefCount();

Tampilkan Nilai

Jumlah kueri yang ditentukan dalam database.

Keterangan

GetQueryDefCount berguna jika Anda perlu mengulangi semua querydef di koleksi QueryDefs. Untuk mendapatkan informasi tentang kueri tertentu dalam koleksi, lihat GetQueryDefInfo.

CDaoDatabase::GetQueryDefInfo

Panggil fungsi anggota ini untuk mendapatkan berbagai jenis informasi tentang kueri yang ditentukan dalam database.

void GetQueryDefInfo(
    int nIndex,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetQueryDefInfo(
    LPCTSTR lpszName,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameter

nIndex
Indeks kueri yang telah ditentukan sebelumnya dalam koleksi QueryDefs database, untuk pencarian menurut indeks.

querydefinfo
Referensi ke objek CDaoQueryDefInfo yang mengembalikan informasi yang diminta.

dwInfoOptions
Opsi yang menentukan informasi mana tentang kumpulan rekaman yang akan diambil. Opsi yang tersedia tercantum di sini bersama dengan apa yang menyebabkan fungsi kembali tentang kumpulan rekaman:

  • Nama AFX_DAO_PRIMARY_INFO (Default), Ketik

  • AFX_DAO_SECONDARY_INFO Informasi utama ditambah: Tanggal Dibuat, Tanggal Pembaruan Terakhir, Mengembalikan Rekaman, Dapat Diperbarui

  • AFX_DAO_ALL_INFO Informasi primer dan sekunder plus: SQL, Koneksi, ODBCTimeout

lpszName
String yang berisi nama kueri yang ditentukan dalam database, untuk pencarian berdasarkan nama.

Keterangan

Dua versi fungsi disediakan sehingga Anda bisa memilih kueri baik menurut indeks dalam koleksi QueryDefs database atau dengan nama kueri.

Untuk deskripsi informasi yang dikembalikan dalam querydefinfo, lihat struktur CDaoQueryDefInfo . Struktur ini memiliki anggota yang sesuai dengan item informasi yang tercantum di atas dalam deskripsi dwInfoOptions. Jika Anda meminta satu tingkat informasi, Anda juga mendapatkan tingkat informasi sebelumnya.

CDaoDatabase::GetQueryTimeout

Panggil fungsi anggota ini untuk mengambil jumlah detik saat ini untuk memungkinkan sebelum operasi berikutnya pada database yang terhubung kehabisan waktu.

short GetQueryTimeout();

Tampilkan Nilai

Bilangan bulat pendek yang berisi nilai batas waktu dalam hitungan detik.

Keterangan

Operasi mungkin kehabisan waktu karena masalah akses jaringan, waktu pemrosesan kueri yang berlebihan, dan sebagainya. Saat pengaturan berlaku, ini memengaruhi semua operasi terbuka, tambahkan baru, perbarui, dan hapus pada kumpulan rekaman apa pun yang terkait dengan objek ini CDaoDatabase . Anda dapat mengubah pengaturan batas waktu saat ini dengan memanggil SetQueryTimeout. Mengubah nilai batas waktu kueri untuk kumpulan rekaman setelah pembukaan tidak mengubah nilai untuk kumpulan rekaman. Misalnya, operasi Pemindahan berikutnya tidak menggunakan nilai baru. Nilai default awalnya diatur saat mesin database diinisialisasi.

Nilai default untuk batas waktu kueri diambil dari registri Windows. Jika tidak ada pengaturan registri, defaultnya adalah 60 detik. Tidak semua database mendukung kemampuan untuk mengatur nilai batas waktu kueri. Jika Anda menetapkan nilai batas waktu kueri 0, tidak ada batas waktu yang terjadi; dan komunikasi dengan database mungkin berhenti merespons. Perilaku ini mungkin berguna selama pengembangan. Jika panggilan gagal, MFC melemparkan pengecualian jenis CDaoException.

Untuk informasi terkait, lihat topik "Properti QueryTimeout" di Bantuan DAO.

CDaoDatabase::GetRecordsAffected

Panggil fungsi anggota ini untuk menentukan jumlah rekaman yang terpengaruh oleh panggilan terbaru fungsi Jalankan anggota.

long GetRecordsAffected();

Tampilkan Nilai

Bilangan bulat panjang yang berisi jumlah rekaman yang terpengaruh.

Keterangan

Nilai yang dikembalikan mencakup jumlah rekaman yang dihapus, diperbarui, atau disisipkan oleh kueri tindakan yang dijalankan dengan Execute. Jumlah yang dikembalikan tidak akan mencerminkan perubahan dalam tabel terkait saat pembaruan atau penghapusan berskala berlaku.

Untuk informasi terkait, lihat topik "RecordsAffected Property" di Bantuan DAO.

CDaoDatabase::GetRelationCount

Panggil fungsi anggota ini untuk mendapatkan jumlah hubungan yang ditentukan antara tabel dalam database.

short GetRelationCount();

Tampilkan Nilai

Jumlah hubungan yang ditentukan antara tabel dalam database.

Keterangan

GetRelationCount berguna jika Anda perlu mengulangi semua hubungan yang ditentukan dalam koleksi Relasi database. Untuk mendapatkan informasi tentang hubungan tertentu dalam koleksi, lihat GetRelationInfo.

Untuk mengilustrasikan konsep hubungan, pertimbangkan tabel Pemasok dan tabel Produk, yang mungkin memiliki hubungan satu-ke-banyak. Dalam hubungan ini, satu pemasok dapat memasok lebih dari satu produk. Hubungan lainnya adalah satu-ke-satu dan banyak-ke-banyak.

CDaoDatabase::GetRelationInfo

Panggil fungsi anggota ini untuk mendapatkan informasi tentang hubungan tertentu dalam koleksi Relasi database.

void GetRelationInfo(
    int nIndex,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetRelationInfo(
    LPCTSTR lpszName,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameter

nIndex
Indeks objek relasi dalam koleksi Relasi database, untuk pencarian menurut indeks.

relinfo
Referensi ke objek CDaoRelationInfo yang mengembalikan informasi yang diminta.

dwInfoOptions
Opsi yang menentukan informasi mana tentang relasi yang akan diambil. Opsi yang tersedia tercantum di sini bersama dengan apa yang menyebabkan fungsi kembali tentang hubungan:

  • Nama AFX_DAO_PRIMARY_INFO (Default), Tabel, Tabel Asing

  • Atribut AFX_DAO_SECONDARY_INFO, Informasi Bidang

Informasi Bidang adalah objek CDaoRelationFieldInfo yang berisi bidang dari tabel utama yang terlibat dalam hubungan.

lpszName
String yang berisi nama objek relasi, untuk pencarian berdasarkan nama.

Keterangan

Dua versi fungsi ini menyediakan akses baik menurut indeks atau berdasarkan nama. Untuk deskripsi informasi yang dikembalikan di relinfo, lihat struktur CDaoRelationInfo . Struktur ini memiliki anggota yang sesuai dengan item informasi yang tercantum di atas dalam deskripsi dwInfoOptions. Jika Anda meminta informasi pada satu tingkat, Anda juga mendapatkan informasi di tingkat sebelumnya.

Catatan

Jika Anda mengatur atribut objek relasi untuk mengaktifkan operasi bertingkat (dbRelationUpdateCascades atau dbRelationDeleteCascades), mesin database Microsoft Jet secara otomatis memperbarui atau menghapus rekaman dalam satu atau beberapa tabel lain saat perubahan dilakukan pada tabel kunci utama terkait. Misalnya, Anda membuat hubungan penghapusan kaskade antara tabel Pelanggan dan tabel Pesanan. Saat Anda menghapus rekaman dari tabel Pelanggan, rekaman dalam tabel Pesanan yang terkait dengan pelanggan tersebut juga dihapus. Selain itu, jika Anda membuat hubungan penghapusan kaskade antara tabel Pesanan dan tabel lainnya, rekaman dari tabel tersebut akan dihapus secara otomatis saat Anda menghapus rekaman dari tabel Pelanggan.

CDaoDatabase::GetTableDefCount

Panggil fungsi anggota ini untuk mengambil jumlah tabel yang ditentukan dalam database.

short GetTableDefCount();

Tampilkan Nilai

Jumlah tabledef yang ditentukan dalam database.

Keterangan

GetTableDefCount berguna jika Anda perlu mengulangi semua tabledef dalam koleksi TableDefs database. Untuk mendapatkan informasi tentang tabel tertentu dalam koleksi, lihat GetTableDefInfo.

CDaoDatabase::GetTableDefInfo

Panggil fungsi anggota ini untuk mendapatkan berbagai jenis informasi tentang tabel yang ditentukan dalam database.

void GetTableDefInfo(
    int nIndex,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetTableDefInfo(
    LPCTSTR lpszName,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameter

nIndex
Indeks objek tabledef dalam koleksi TableDefs database, untuk pencarian menurut indeks.

tabledefinfo
Referensi ke objek CDaoTableDefInfo yang mengembalikan informasi yang diminta.

dwInfoOptions
Opsi yang menentukan informasi mana tentang tabel yang akan diambil. Opsi yang tersedia tercantum di sini bersama dengan apa yang menyebabkan fungsi kembali tentang hubungan:

  • Nama AFX_DAO_PRIMARY_INFO (Default), Dapat Diperbarui, Atribut

  • AFX_DAO_SECONDARY_INFO Informasi utama plus: Tanggal Dibuat, Tanggal Terakhir Diperbarui, Nama Tabel Sumber, Koneksi

  • AFX_DAO_ALL_INFO Informasi primer dan sekunder plus: Aturan Validasi, Teks Validasi, Jumlah Rekaman

lpszName
Nama objek tabledef, untuk pencarian menurut nama.

Keterangan

Dua versi fungsi disediakan sehingga Anda dapat memilih tabel baik menurut indeks dalam koleksi TableDefs database atau dengan nama tabel.

Untuk deskripsi informasi yang dikembalikan dalam tabledefinfo, lihat struktur CDaoTableDefInfo . Struktur ini memiliki anggota yang sesuai dengan item informasi yang tercantum di atas dalam deskripsi dwInfoOptions. Jika Anda meminta informasi di satu tingkat, Anda juga mendapatkan informasi untuk tingkat sebelumnya.

Catatan

Opsi AFX_DAO_ALL_INFO menyediakan informasi yang bisa lambat untuk diperoleh. Dalam hal ini, menghitung rekaman dalam tabel bisa sangat memakan waktu jika ada banyak rekaman.

CDaoDatabase::GetVersion

Panggil fungsi anggota ini untuk menentukan versi file database Microsoft Jet.

CString GetVersion();

Tampilkan Nilai

CString yang menunjukkan versi file database yang terkait dengan objek .

Keterangan

Nilai yang dikembalikan mewakili nomor versi dalam formulir "major.minor"; misalnya, "3.0". Nomor versi produk (misalnya, 3.0) terdiri dari nomor versi (3), titik, dan nomor rilis (0). Versi hingga saat ini adalah 1.0, 1.1, 2.0, dan 3.0.

Untuk informasi terkait, lihat topik "Properti Versi" di Bantuan DAO.

CDaoDatabase::IsOpen

Panggil fungsi anggota ini untuk menentukan apakah CDaoDatabase objek saat ini terbuka pada database.

BOOL IsOpen() const;

Tampilkan Nilai

Bukan nol jika CDaoDatabase objek saat ini terbuka; jika tidak, 0.

Keterangan

CDaoDatabase::m_pDAODatabase

Berisi penunjuk ke antarmuka OLE untuk objek database DAO yang mendasani CDaoDatabase objek.

Keterangan

Gunakan pointer ini jika Anda perlu mengakses antarmuka DAO secara langsung.

Untuk informasi tentang memanggil DAO secara langsung, lihat Catatan Teknis 54.

CDaoDatabase::m_pWorkspace

Berisi penunjuk ke objek CDaoWorkspace yang berisi objek database.

Keterangan

Gunakan penunjuk ini jika Anda perlu mengakses ruang kerja secara langsung — misalnya, untuk mendapatkan penunjuk ke objek database lain di kumpulan Database ruang kerja.

CDaoDatabase::Buka

Anda harus memanggil fungsi anggota ini untuk menginisialisasi objek yang baru dibangun CDaoDatabase yang mewakili database yang sudah ada.

virtual void Open(
    LPCTSTR lpszName,
    BOOL bExclusive = FALSE,
    BOOL bReadOnly = FALSE,
    LPCTSTR lpszConnect = _T(""));

Parameter

lpszName
Ekspresi string yang merupakan nama Microsoft Jet yang ada (. File database MDB). Jika nama file memiliki ekstensi, diperlukan. Jika jaringan Anda mendukung konvensi penamaan seragam (UNC), Anda juga dapat menentukan jalur jaringan, seperti "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Garis miring terbelakang ganda diperlukan dalam literal string karena "\" adalah karakter escape C++.)

Beberapa pertimbangan berlaku saat menggunakan lpszName. Jika:

  • Mengacu pada database yang sudah terbuka untuk akses eksklusif oleh pengguna lain, MFC melemparkan pengecualian jenis CDaoException. Perangkap pengecualian itu untuk memberi tahu pengguna Anda bahwa database tidak tersedia.

  • Adalah string kosong ("") dan lpsz Koneksi adalah "ODBC;", kotak dialog yang mencantumkan semua nama sumber data ODBC terdaftar ditampilkan sehingga pengguna dapat memilih database. Anda harus menghindari koneksi langsung ke sumber data ODBC; gunakan tabel terlampir sebagai gantinya.

  • Jika tidak, tidak merujuk ke database yang ada atau nama sumber data ODBC yang valid, MFC melemparkan pengecualian jenis CDaoException.

Catatan

Untuk detail tentang kode kesalahan DAO, lihat DAOERR. File H. Untuk informasi terkait, lihat topik "Kesalahan Akses Data yang Dapat Dijebak" di Bantuan DAO.

bExclusive
Nilai Boolean yang TRUE jika database akan dibuka untuk akses eksklusif (nonshared) dan FALSE jika database akan dibuka untuk akses bersama. Jika Anda menghilangkan argumen ini, database dibuka untuk akses bersama.

bReadOnly
Nilai Boolean yang TRUE jika database akan dibuka untuk akses baca-saja dan FALSE jika database akan dibuka untuk akses baca/tulis. Jika Anda menghilangkan argumen ini, database dibuka untuk akses baca/tulis. Semua kumpulan rekaman dependen mewarisi atribut ini.

lpsz Koneksi
Ekspresi string yang digunakan untuk membuka database. String ini merupakan argumen koneksi ODBC. Anda harus menyediakan argumen eksklusif dan baca-saja untuk menyediakan string sumber. Jika database adalah database Microsoft Jet (. MDB), string ini kosong (""). Sintaks untuk nilai default — _T("") — menyediakan portabilitas untuk Unicode serta build ANSI aplikasi Anda.

Keterangan

Open mengaitkan database dengan objek DAO yang mendasar. Anda tidak dapat menggunakan objek database untuk membuat objek recordset, tabledef, atau querydef hingga diinisialisasi. Open menambahkan objek database ke kumpulan Database ruang kerja terkait.

Gunakan parameter sebagai berikut:

  • Jika Anda membuka Microsoft Jet (. Database MDB), gunakan parameter lpszName dan berikan string kosong untuk parameter lpsz Koneksi atau berikan string kata sandi formulir "; PWD=password" jika database dilindungi kata sandi (. Database MDB saja).

  • Jika Anda membuka sumber data ODBC, berikan string koneksi ODBC yang valid di lpsz Koneksi dan string kosong di lpszName.

Untuk informasi terkait, lihat topik "Metode OpenDatabase" di Bantuan DAO.

Catatan

Untuk performa yang lebih baik saat mengakses database eksternal, termasuk database ISAM dan sumber data ODBC, disarankan agar Anda melampirkan tabel database eksternal ke database mesin Microsoft Jet (. MDB) daripada menyambungkan langsung ke sumber data.

Dimungkinkan untuk upaya koneksi kehabisan waktu jika, misalnya, host DBMS tidak tersedia. Jika upaya koneksi gagal, Open melemparkan pengecualian jenis CDaoException.

Komentar yang tersisa hanya berlaku untuk database ODBC:

Jika database adalah database ODBC dan parameter dalam panggilan Anda Open tidak berisi informasi yang cukup untuk membuat koneksi, driver ODBC membuka kotak dialog untuk mendapatkan informasi yang diperlukan dari pengguna. Saat Anda memanggil Open, string koneksi Anda, lpsz Koneksi, disimpan secara privat dan tersedia dengan memanggil fungsi anggota Get Koneksi.

Jika mau, Anda dapat membuka kotak dialog Anda sendiri sebelum memanggil Open untuk mendapatkan informasi dari pengguna, seperti kata sandi, lalu menambahkan informasi tersebut ke string koneksi Anda meneruskan ke Open. Atau Anda mungkin ingin menyimpan string koneksi yang Anda lewati (mungkin di registri Open Windows) sehingga Anda dapat menggunakannya kembali lain kali aplikasi Anda memanggil objekCDaoDatabase.

Anda juga dapat menggunakan string koneksi untuk beberapa tingkat otorisasi masuk (masing-masing untuk objek yang berbedaCDaoDatabase) atau untuk menyampaikan informasi spesifik database lainnya.

CDaoDatabase::SetQueryTimeout

Panggil fungsi anggota ini untuk mengambil alih jumlah detik default untuk diizinkan sebelum operasi berikutnya pada waktu database yang tersambung habis.

void SetQueryTimeout(short nSeconds);

Parameter

nSeconds
Jumlah detik yang diperbolehkan sebelum upaya kueri kehabisan waktu.

Keterangan

Operasi mungkin kehabisan waktu karena masalah akses jaringan, waktu pemrosesan kueri yang berlebihan, dan sebagainya. Panggil SetQueryTimeout sebelum membuka kumpulan rekaman Anda atau sebelum memanggil fungsi TambahkanBaru, Perbarui, atau Hapus anggota himpunan catatan jika Anda ingin mengubah nilai batas waktu kueri. Pengaturan memengaruhi semua panggilan Open, , , Updatedan Delete berikutnya ke kumpulan rekaman apa pun yang terkait dengan objek ini CDaoDatabaseAddNew. Mengubah nilai batas waktu kueri untuk kumpulan rekaman setelah pembukaan tidak mengubah nilai untuk kumpulan rekaman. Misalnya, operasi Pemindahan berikutnya tidak menggunakan nilai baru.

Nilai default untuk batas waktu kueri adalah 60 detik. Tidak semua database mendukung kemampuan untuk mengatur nilai batas waktu kueri. Jika Anda menetapkan nilai batas waktu kueri 0, tidak ada batas waktu yang terjadi; komunikasi dengan database mungkin berhenti merespons. Perilaku ini mungkin berguna selama pengembangan.

Untuk informasi terkait, lihat topik "Properti QueryTimeout" di Bantuan DAO.

Baca juga

Kelas CObject
Bagan Hierarki
Kelas CDaoWorkspace
Kelas CDaoRecordset
Kelas CDaoTableDef
Kelas CDaoQueryDef
Kelas CDatabase
Kelas CDaoException