Kelas CDaoDatabase
Mewakili koneksi ke database Access menggunakan Objek Akses Data (DAO).
Catatan
Objek Akses Data (DAO) didukung melalui Office 2013. DAO 3.6 adalah versi akhir, dan 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::GetConnect | 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 waktu operasi kueri database habis. 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) 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.
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 Open Database Base Connectivity (ODBC) adalah dengan melampirkan tabel eksternal ke database Microsoft Jet (.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
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 sendiri objek-objek ini 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 ModerndbLangArabic
ArabdbLangCyrillic
RusiadbLangCzech
CekodbLangDutch
BelandadbLangGreek
YunanidbLangHebrew
IbranidbLangHungarian
HongariadbLangIcelandic
IslandiadbLangNordic
Bahasa Nordik (hanya mesin database Microsoft Jet versi 1.0)dbLangNorwdan
Norwegia dan DenmarkdbLangPolish
PolandiadbLangSpanish
Bahasa Spanyol TradisionaldbLangSwedfin
Bahasa Swedia dan FinlandiadbLangTurkish
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 menelepon 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 melemparkan 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 yang disediakan kombinasi 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 dbInconsistent
dbConsistent
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 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::GetConnect
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, Connect, 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 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 ditambah: Tanggal Dibuat, Tanggal Terakhir Diperbarui, Nama Tabel Sumber, Sambungkan
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 pointer 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 lpszConnect 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.
lpszConnect
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 lpszConnect 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 lpszConnect 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, lpszConnect, disimpan secara privat dan tersedia dengan memanggil fungsi anggota GetConnect.
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, , , Update
dan Delete
berikutnya ke kumpulan rekaman apa pun yang terkait dengan objek ini CDaoDatabase
AddNew
. 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.
Lihat juga
Kelas CObject
Bagan Hierarki
Kelas CDaoWorkspace
Kelas CDaoRecordset
Kelas CDaoTableDef
Kelas CDaoQueryDef
Kelas CDatabase
Kelas CDaoException