CDatabase
Kelas
Mewakili koneksi ke sumber data, tempat Anda dapat beroperasi pada sumber data.
Sintaks
class CDatabase : public CObject
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CDatabase::CDatabase |
Membuat CDatabase objek. Anda harus menginisialisasi objek dengan memanggil OpenEx atau Open . |
Metode Publik
Nama | Deskripsi |
---|---|
CDatabase::BeginTrans |
Memulai "transaksi" — serangkaian panggilan yang dapat dibalik ke AddNew fungsi kelas CRecordset , , Delete Edit , dan Update anggota — pada sumber data yang terhubung. Sumber data harus mendukung transaksi agar BeginTrans memiliki efek apa pun. |
CDatabase::BindParameters |
Memungkinkan Anda untuk mengikat parameter sebelum memanggil CDatabase::ExecuteSQL . |
CDatabase::Cancel |
Membatalkan operasi asinkron atau proses dari utas kedua. |
CDatabase::CanTransact |
Mengembalikan nonzero jika sumber data mendukung transaksi. |
CDatabase::CanUpdate |
Mengembalikan nonzero jika objek dapat diperbarui CDatabase (bukan baca-saja). |
CDatabase::Close |
Menutup koneksi sumber data. |
CDatabase::CommitTrans |
Menyelesaikan transaksi yang dimulai oleh BeginTrans . Perintah dalam transaksi yang mengubah sumber data dilakukan. |
CDatabase::ExecuteSQL |
Menjalankan pernyataan SQL. Tidak ada rekaman data yang dikembalikan. |
CDatabase::GetBookmarkPersistence |
Mengidentifikasi operasi di mana marka buku bertahan pada objek recordset. |
CDatabase::GetConnect |
Mengembalikan string koneksi ODBC yang digunakan untuk menyambungkan CDatabase objek ke sumber data. |
CDatabase::GetCursorCommitBehavior |
Mengidentifikasi efek melakukan transaksi pada objek set rekaman terbuka. |
CDatabase::GetCursorRollbackBehavior |
Mengidentifikasi efek menggulung balik transaksi pada objek recordset terbuka. |
CDatabase::GetDatabaseName |
Mengembalikan nama database yang saat ini digunakan. |
CDatabase::IsOpen |
Mengembalikan bukan nol jika CDatabase objek saat ini tersambung ke sumber data. |
CDatabase::OnSetOptions |
Dipanggil oleh kerangka kerja untuk mengatur opsi koneksi standar. Implementasi default menetapkan nilai batas waktu kueri. Anda dapat menetapkan opsi ini sebelumnya dengan memanggil SetQueryTimeout . |
CDatabase::Open |
Membuat koneksi ke sumber data (melalui driver ODBC). |
CDatabase::OpenEx |
Membuat koneksi ke sumber data (melalui driver ODBC). |
CDatabase::Rollback |
Membalikkan perubahan yang dilakukan selama transaksi saat ini. Sumber data kembali ke status sebelumnya, seperti yang didefinisikan pada BeginTrans panggilan, tidak diubah. |
CDatabase::SetLoginTimeout |
Mengatur jumlah detik setelah upaya koneksi sumber data akan kehabisan waktu. |
CDatabase::SetQueryTimeout |
Mengatur jumlah detik setelah operasi kueri database akan kehabisan waktu. Mempengaruhi semua himpunan Open rekaman berikutnya, , AddNew , Edit dan Delete panggilan. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CDatabase::m_hdbc |
Handel koneksi Open Database Connectivity (ODBC) ke sumber data. Ketik HDBC. |
Keterangan
Sumber data adalah instans data tertentu yang dihosting oleh beberapa sistem manajemen database (DBMS). Contohnya termasuk Microsoft SQL Server, Microsoft Access, Borland dBASE, dan xBASE. Anda dapat memiliki satu atau beberapa CDatabase
objek aktif pada satu waktu di aplikasi Anda.
Catatan
Jika Anda bekerja dengan kelas Objek Akses Data (DAO) daripada kelas Open Database Connectivity (ODBC), gunakan kelas CDaoDatabase
sebagai gantinya. Untuk informasi selengkapnya, lihat artikel Gambaran Umum: Pemrograman Database.
Untuk menggunakan CDatabase
, buat CDatabase
objek dan panggil fungsi anggotanya OpenEx
. Ini membuka koneksi. Saat Anda kemudian membuat CRecordset
objek untuk beroperasi pada sumber data yang terhubung, teruskan konstruktor recordset penunjuk ke objek Anda CDatabase
. Setelah Anda selesai menggunakan koneksi, panggil Close
fungsi anggota dan hancurkan CDatabase
objek. Close
menutup kumpulan rekaman apa pun yang belum Anda tutup sebelumnya.
Untuk informasi selengkapnya tentang CDatabase
, lihat artikel Sumber Data (ODBC) dan Gambaran Umum: Pemrograman Database.
Hierarki Warisan
CDatabase
Persyaratan
Header: afxdb.h
CDatabase::BeginTrans
Panggil fungsi anggota ini untuk memulai transaksi dengan sumber data yang terhubung.
BOOL BeginTrans();
Tampilkan Nilai
Bukan nol jika panggilan berhasil dan perubahan hanya dilakukan secara manual; jika tidak, 0.
Keterangan
Transaksi terdiri dari satu atau beberapa panggilan ke AddNew
fungsi CRecordset
anggota objek , Edit
, Delete
, dan Update
. Sebelum memulai transaksi, CDatabase
objek harus sudah tersambung ke sumber data dengan memanggil fungsi atau Open
anggotanyaOpenEx
. Untuk mengakhiri transaksi, panggil CommitTrans
untuk menerima semua perubahan pada sumber data (dan melaksanakannya) atau memanggil Rollback
untuk membatalkan seluruh transaksi. Panggil BeginTrans
setelah Anda membuka kumpulan rekaman apa pun yang terlibat dalam transaksi dan sedekat mungkin dengan operasi pembaruan aktual.
Perhatian
Bergantung pada driver ODBC Anda, membuka kumpulan rekaman sebelum memanggil BeginTrans
dapat menyebabkan masalah saat memanggil Rollback
. Anda harus memeriksa driver tertentu yang Anda gunakan. Misalnya, saat menggunakan driver Microsoft Access yang disertakan dalam Microsoft ODBC Desktop Driver Pack 3.0, Anda harus memperhitungkan persyaratan mesin database Jet bahwa Anda tidak boleh memulai transaksi pada database apa pun yang memiliki kursor terbuka. Di kelas database MFC, kursor terbuka berarti objek terbuka CRecordset
. Untuk informasi selengkapnya, lihat Catatan Teknis 68.
BeginTrans
juga dapat mengunci rekaman data di server, tergantung pada konkurensi yang diminta dan kemampuan sumber data. Untuk informasi tentang mengunci data, lihat artikel Recordset: Mengunci Rekaman (ODBC).
Transaksi yang ditentukan pengguna dijelaskan dalam artikel Transaksi (ODBC).
BeginTrans
menetapkan status di mana urutan transaksi dapat digulung balik (terbalik). Untuk menetapkan status baru untuk pembatalan, lakukan transaksi saat ini, lalu panggil BeginTrans
lagi.
Perhatian
Memanggil BeginTrans
lagi tanpa memanggil CommitTrans
atau Rollback
adalah kesalahan.
CanTransact
Panggil fungsi anggota untuk menentukan apakah driver Anda mendukung transaksi untuk database tertentu. Anda juga harus memanggil GetCursorCommitBehavior
dan GetCursorRollbackBehavior
menentukan dukungan untuk pelestarian kursor.
Untuk informasi selengkapnya tentang transaksi, lihat artikel Transaksi (ODBC).
Contoh
Lihat artikel Transaksi: Melakukan Transaksi dalam Recordset (ODBC).
CDatabase::BindParameters
Ambil alih BindParameters
saat Anda perlu mengikat parameter sebelum memanggil CDatabase::ExecuteSQL
.
virtual void BindParameters(HSTMT hstmt);
Parameter
hstmt
Handel pernyataan ODBC yang ingin Anda ikat parameternya.
Keterangan
Pendekatan ini berguna ketika Anda tidak memerlukan hasil yang ditetapkan dari prosedur tersimpan.
Dalam penimpaan Anda, panggil SQLBindParameters
dan fungsi ODBC terkait untuk mengikat parameter. MFC memanggil penimpaan Anda sebelum panggilan Anda ke ExecuteSQL
. Anda tidak perlu memanggil SQLPrepare
; ExecuteSQL
memanggil SQLExecDirect
dan menghancurkan hstmt
, yang hanya digunakan sekali.
CDatabase::Cancel
Panggil fungsi anggota ini untuk meminta agar sumber data membatalkan operasi asinkron yang sedang berlangsung atau proses dari utas kedua.
void Cancel();
Keterangan
Perhatikan bahwa kelas ODBC MFC tidak lagi menggunakan pemrosesan asinkron; untuk melakukan operasi asinkron, Anda harus langsung memanggil fungsi SQLSetConnectOption
ODBC API . Untuk informasi selengkapnya, lihat Eksekusi Asinkron.
CDatabase::CanTransact
Panggil fungsi anggota ini untuk menentukan apakah database mengizinkan transaksi.
BOOL CanTransact() const;
Tampilkan Nilai
Nonzero jika recordset menggunakan objek ini CDatabase
memungkinkan transaksi; jika tidak, 0.
Keterangan
Untuk informasi tentang transaksi, lihat artikel Transaksi (ODBC).
CDatabase::CanUpdate
Panggil fungsi anggota ini untuk menentukan apakah objek mengizinkan CDatabase
pembaruan.
BOOL CanUpdate() const;
Tampilkan Nilai
Nonzero jika CDatabase
objek memungkinkan pembaruan; jika tidak, 0, menunjukkan bahwa Anda meneruskan TRUE
bReadOnly
saat Anda membuka CDatabase
objek atau bahwa sumber data itu sendiri bersifat baca-saja. Sumber data bersifat baca-saja jika panggilan ke fungsi SQLGetInfo
ODBC API untuk SQL_DATASOURCE_READ_ONLY
mengembalikan y
.
Keterangan
Tidak semua driver mendukung pembaruan.
CDatabase::CDatabase
Membuat CDatabase
objek.
CDatabase();
Keterangan
Setelah membuat objek, Anda harus memanggil fungsi atau Open
anggotanya OpenEx
untuk membuat koneksi ke sumber data tertentu.
Anda mungkin merasa nyaman untuk menyematkan CDatabase
objek di kelas dokumen Anda.
Contoh
Contoh ini mengilustrasikan penggunaan CDatabase
di CDocument
kelas -turunan.
// This fragment is taken from the declaration for CMyDatabaseDoc
// CMyDatabaseDoc is derived from CDocument.
public:
// Declare a CDatabase embedded in the document
CDatabase m_dbCust;
// Initialize when needed
CDatabase *CMyDatabaseDoc::GetDatabase()
{
// Connect the object to a data source
if (!m_dbCust.IsOpen() && !m_dbCust.OpenEx(NULL))
return NULL;
return &m_dbCust;
}
CDatabase::Close
Panggil fungsi anggota ini jika Anda ingin memutuskan sambungan dari sumber data.
virtual void Close();
Keterangan
Anda harus menutup kumpulan rekaman apa pun yang terkait dengan CDatabase
objek sebelum Anda memanggil fungsi anggota ini. Karena Close
tidak menghancurkan CDatabase
objek, Anda dapat menggunakan kembali objek dengan membuka koneksi baru ke sumber data yang sama atau sumber data yang berbeda.
Semua pernyataan rekaman yang tertunda AddNew
atau Edit
yang menggunakan database dibatalkan, dan semua transaksi yang tertunda digulung balik. Setiap kumpulan rekaman yang bergantung pada CDatabase
objek dibiarkan dalam status tidak terdefinisi.
Contoh
// Close the current connection
m_dbCust.Close();
// Perhaps connect the object to a
// different data source
m_dbCust.OpenEx(_T("DSN=MFC_ODBCTest;UID=JOES"));
CDatabase::CommitTrans
Panggil fungsi anggota ini setelah menyelesaikan transaksi.
BOOL CommitTrans();
Tampilkan Nilai
Bukan nol jika pembaruan berhasil diterapkan; jika tidak, 0. Jika CommitTrans
gagal, status sumber data tidak terdefinisi. Anda harus memeriksa data untuk menentukan statusnya.
Keterangan
Transaksi terdiri dari serangkaian panggilan ke AddNew
fungsi anggota , , Delete
Edit
, dan Update
dari CRecordset
objek yang dimulai dengan panggilan ke BeginTrans
fungsi anggota. CommitTrans
melakukan transaksi. Secara default, pembaruan dilakukan segera; BeginTrans
panggilan menyebabkan komitmen pembaruan tertunda hingga CommitTrans
dipanggil.
Hingga Anda memanggil CommitTrans
untuk mengakhiri transaksi, Anda dapat memanggil Rollback
fungsi anggota untuk membatalkan transaksi dan meninggalkan sumber data dalam keadaan aslinya. Untuk memulai transaksi baru, hubungi BeginTrans
lagi.
Untuk informasi selengkapnya tentang transaksi, lihat artikel Transaksi (ODBC).
Contoh
Lihat artikel Transaksi: Melakukan Transaksi dalam Recordset (ODBC).
CDatabase::ExecuteSQL
Panggil fungsi anggota ini saat Anda perlu menjalankan perintah SQL secara langsung.
void ExecuteSQL(LPCTSTR lpszSQL);
Parameter
lpszSQL
Penunjuk ke string null-terminated yang berisi perintah SQL yang valid untuk dijalankan. Anda dapat meneruskan CString
.
Keterangan
Buat perintah sebagai string yang dihentikan null. ExecuteSQL
tidak mengembalikan rekaman data. Jika Anda ingin beroperasi pada rekaman, gunakan objek recordset sebagai gantinya.
Sebagian besar perintah Anda untuk sumber data dikeluarkan melalui objek recordset, yang mendukung perintah untuk memilih data, menyisipkan rekaman baru, menghapus rekaman, dan mengedit rekaman. Namun, tidak semua fungsionalitas ODBC didukung langsung oleh kelas database, jadi Anda mungkin terkadang perlu melakukan panggilan SQL langsung dengan ExecuteSQL
.
Contoh
try
{
m_dbCust.ExecuteSQL(
_T("UPDATE Taxes ")
_T("SET Rate = '36' ")
_T("WHERE Name = 'Federal'"));
}
catch (CDBException *pe)
{
// The error code is in pe->m_nRetCode
pe->ReportError();
pe->Delete();
}
CDatabase::GetBookmarkPersistence
Panggil fungsi anggota ini untuk menentukan persistensi marka buku pada objek recordset setelah operasi tertentu.
DWORD GetBookmarkPersistence() const;
Tampilkan Nilai
Bitmask yang mengidentifikasi operasi tempat bookmark bertahan pada objek recordset. Untuk detailnya, lihat Keterangan.
Keterangan
Misalnya, jika Anda memanggil CRecordset::GetBookmark
lalu memanggil CRecordset::Requery
, marka buku yang diperoleh GetBookmark
mungkin tidak lagi valid. Anda harus menelepon GetBookmarkPersistence
sebelum memanggil CRecordset::SetBookmark
.
Tabel berikut mencantumkan nilai bitmask yang dapat digabungkan untuk nilai GetBookmarkPersistence
pengembalian .
Nilai bitmask | Persistensi marka buku |
---|---|
SQL_BP_CLOSE |
Marka buku valid setelah Requery operasi. |
SQL_BP_DELETE |
Marka buku untuk baris valid setelah Delete operasi pada baris tersebut. |
SQL_BP_DROP |
Marka buku valid setelah Close operasi. |
SQL_BP_SCROLL |
Marka buku valid setelah operasi apa pun Move . Ini hanya mengidentifikasi apakah marka buku didukung pada recordset, seperti yang dikembalikan oleh CRecordset::CanBookmark . |
SQL_BP_TRANSACTION |
Marka buku valid setelah transaksi dilakukan atau digulung balik. |
SQL_BP_UPDATE |
Marka buku untuk baris valid setelah Update operasi pada baris tersebut. |
SQL_BP_OTHER_HSTMT |
Bookmark yang terkait dengan satu objek recordset valid pada recordset kedua. |
Untuk informasi selengkapnya tentang nilai pengembalian ini, lihat fungsi SQLGetInfo
ODBC API di Windows SDK. Untuk informasi selengkapnya tentang marka buku, lihat artikel Kumpulan Catatan: Marka Buku dan Posisi Absolut (ODBC).
CDatabase::GetConnect
Panggil fungsi anggota ini untuk mengambil string koneksi yang digunakan selama panggilan ke OpenEx
atau Open
yang menghubungkan objek ke CDatabase
sumber data.
const CString GetConnect() const;
Tampilkan Nilai
yang const
CString
berisi string koneksi jika OpenEx
atau Open
telah dipanggil; jika tidak, string kosong.
Keterangan
Lihat CDatabase::Open
untuk deskripsi tentang bagaimana string koneksi dibuat.
CDatabase::GetCursorCommitBehavior
Panggil fungsi anggota ini untuk menentukan bagaimana CommitTrans
operasi memengaruhi kursor pada objek set rekaman terbuka.
int GetCursorCommitBehavior() const;
Tampilkan Nilai
Nilai yang menunjukkan efek transaksi pada objek recordset terbuka. Untuk detailnya, lihat Keterangan.
Keterangan
Tabel berikut mencantumkan kemungkinan nilai pengembalian untuk GetCursorCommitBehavior
dan efek terkait pada kumpulan rekaman terbuka.
Nilai hasil | Efek pada CRecordset objek |
---|---|
SQL_CB_CLOSE |
Hubungi CRecordset::Requery segera setelah penerapan transaksi. |
SQL_CB_DELETE |
Hubungi CRecordset::Close segera setelah penerapan transaksi. |
SQL_CB_PRESERVE |
Lanjutkan secara normal dengan CRecordset operasi. |
Untuk informasi selengkapnya tentang nilai pengembalian ini, lihat fungsi SQLGetInfo
ODBC API di Windows SDK. Untuk informasi selengkapnya tentang transaksi, lihat artikel Transaksi (ODBC).
CDatabase::GetCursorRollbackBehavior
Panggil fungsi anggota ini untuk menentukan bagaimana Rollback
operasi memengaruhi kursor pada objek set rekaman terbuka.
int GetCursorRollbackBehavior() const;
Tampilkan Nilai
Nilai yang menunjukkan efek transaksi pada objek recordset terbuka. Untuk detailnya, lihat Keterangan.
Keterangan
Tabel berikut mencantumkan kemungkinan nilai pengembalian untuk GetCursorRollbackBehavior
dan efek terkait pada kumpulan rekaman terbuka.
Nilai hasil | Efek pada CRecordset objek |
---|---|
SQL_CB_CLOSE |
Hubungi CRecordset::Requery segera setelah pembatalan transaksi. |
SQL_CB_DELETE |
Hubungi CRecordset::Close segera setelah pembatalan transaksi. |
SQL_CB_PRESERVE |
Lanjutkan secara normal dengan CRecordset operasi. |
Untuk informasi selengkapnya tentang nilai pengembalian ini, lihat fungsi SQLGetInfo
ODBC API di Windows SDK. Untuk informasi selengkapnya tentang transaksi, lihat artikel Transaksi (ODBC).
CDatabase::GetDatabaseName
Panggil fungsi anggota ini untuk mengambil nama database yang saat ini tersambung (asalkan sumber data menentukan objek bernama yang disebut "database").
CString GetDatabaseName() const;
Tampilkan Nilai
yang CString
berisi nama database jika berhasil; jika tidak, kosong CString
.
Keterangan
Ini tidak sama dengan nama sumber data (DSN) yang ditentukan dalam OpenEx
atau Open
panggilan. Apa yang GetDatabaseName
kembali tergantung pada ODBC. Secara umum, database adalah kumpulan tabel. Jika entitas ini memiliki nama, GetDatabaseName
mengembalikannya.
Misalnya, Anda mungkin ingin menampilkan nama ini dalam judul. Jika terjadi kesalahan saat mengambil nama dari ODBC, GetDatabaseName
mengembalikan kosong CString
.
CDatabase::IsOpen
Panggil fungsi anggota ini untuk menentukan apakah CDatabase
objek saat ini tersambung ke sumber data.
BOOL IsOpen() const;
Tampilkan Nilai
Bukan nol jika CDatabase
objek saat ini tersambung; jika tidak, 0.
CDatabase::m_hdbc
Berisi handel publik ke koneksi sumber data ODBC — "handel koneksi."
Keterangan
Biasanya, Anda tidak perlu mengakses variabel anggota ini secara langsung. Sebaliknya, kerangka kerja mengalokasikan handel saat Anda memanggil OpenEx
atau Open
. Kerangka kerja membatalkan alokasi handel saat Anda memanggil delete
operator pada CDatabase
objek. Perhatikan bahwa Close
fungsi anggota tidak membatalkan alokasi handel.
Namun, dalam beberapa keadaan, Anda mungkin perlu menggunakan handel secara langsung. Misalnya, jika Anda perlu memanggil fungsi ODBC API secara langsung daripada melalui kelas CDatabase
, Anda mungkin memerlukan handel koneksi untuk diteruskan sebagai parameter. Lihat contoh kode di bawah ini.
Contoh
// Using m_hdbc for a direct ODBC API call.
// m_dbCust is the CDatabase object; m_hdbc is
// its HDBC member variable
nRetCode = ::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
&nValue, sizeof(nValue), &cbValue);
CDatabase::OnSetOptions
Kerangka kerja memanggil fungsi anggota ini saat langsung menjalankan pernyataan SQL dengan ExecuteSQL
fungsi anggota.
virtual void OnSetOptions(HSTMT hstmt);
Parameter
hstmt
Handel pernyataan ODBC yang opsinya sedang diatur.
Keterangan
CRecordset::OnSetOptions
juga memanggil fungsi anggota ini.
OnSetOptions
mengatur nilai batas waktu masuk. Jika telah ada panggilan sebelumnya ke SetQueryTimeout
fungsi anggota dan , OnSetOptions
mencerminkan nilai saat ini; jika tidak, itu menetapkan nilai default.
Catatan
Sebelum MFC 4.2, OnSetOptions
atur juga mode pemrosesan ke snychronous atau asinkron. Dimulai dengan MFC 4.2, semua operasi sinkron. Untuk melakukan operasi asinkron, Anda harus melakukan panggilan langsung ke fungsi SQLSetPos
ODBC API .
Anda tidak perlu mengambil alih OnSetOptions
untuk mengubah nilai batas waktu. Sebagai gantinya, untuk mengkustomisasi nilai batas waktu kueri, panggil SetQueryTimeout
sebelum membuat kumpulan rekaman; OnSetOptions
akan menggunakan nilai baru. Nilai yang ditetapkan berlaku untuk operasi berikutnya pada semua recordset atau panggilan SQL langsung.
Ambil alih OnSetOptions
jika Anda ingin mengatur opsi tambahan. Penimpaan Anda harus memanggil kelas OnSetOptions
dasar baik sebelum atau sesudah Anda memanggil fungsi SQLSetStmtOption
ODBC API . Ikuti metode yang diilustrasikan dalam implementasi default kerangka kerja dari OnSetOptions
.
CDatabase::Open
Panggil fungsi anggota ini untuk menginisialisasi objek yang baru dibangun CDatabase
.
virtual BOOL Open(
LPCTSTR lpszDSN,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE);
Parameter
lpszDSN
Menentukan nama sumber data — nama yang terdaftar di ODBC melalui program Administrator ODBC. Jika nilai DSN ditentukan dalam lpszConnect
(dalam formulir "DSN=<sumber> data"), nilai DSN tidak boleh ditentukan lagi di lpszDSN
. Dalam hal ini, lpszDSN
harus NULL
. Jika tidak, Anda dapat meneruskan NULL
jika Anda ingin menyajikan pengguna dengan kotak dialog Sumber Data tempat pengguna dapat memilih sumber data. Untuk informasi selengkapnya, lihat Keterangan.
bExclusive
Tidak didukung dalam versi pustaka kelas ini. Saat ini, pernyataan gagal jika parameter ini adalah TRUE
. Sumber data selalu dibuka sebagai dibagikan (tidak eksklusif).
bReadOnly
TRUE
jika Anda berniat koneksi menjadi baca-saja dan melarang pembaruan ke sumber data. Semua kumpulan rekaman dependen mewarisi atribut ini. Nilai defaultnya adalah FALSE
.
lpszConnect
Menentukan string koneksi. string koneksi menggabungkan informasi, mungkin termasuk nama sumber data, ID pengguna yang valid pada sumber data, string autentikasi pengguna (kata sandi, jika sumber data memerlukannya), dan informasi lainnya. Seluruh string koneksi harus diawali oleh string "ODBC;"
(huruf besar atau huruf kecil). String "ODBC;"
digunakan untuk menunjukkan bahwa koneksi ke sumber data ODBC; ini untuk kompatibilitas ke atas ketika versi pustaka kelas di masa mendatang mungkin mendukung sumber data non-ODBC.
bUseCursorLib
TRUE
jika Anda ingin DLL Pustaka Kursor ODBC dimuat. Pustaka kursor menutupi beberapa fungsionalitas driver ODBC yang mendasarinya, secara efektif mencegah penggunaan dinaset (jika driver mendukungnya). Satu-satunya kursor yang didukung jika pustaka kursor dimuat adalah rekam jepret statis dan kursor khusus terusan. Nilai defaultnya adalah TRUE
. Jika Anda berencana untuk membuat objek recordset langsung dari CRecordset
tanpa turunan darinya, Anda tidak boleh memuat pustaka kursor.
Tampilkan Nilai
Bukan nol jika koneksi berhasil dibuat; jika tidak, 0 jika pengguna memilih Batal saat menyajikan kotak dialog yang meminta informasi koneksi lainnya. Dalam semua kasus lain, kerangka kerja melemparkan pengecualian.
Keterangan
Objek database Anda harus diinisialisasi sebelum Anda dapat menggunakannya untuk membuat objek kumpulan rekaman.
Catatan
Memanggil OpenEx
fungsi anggota adalah cara yang lebih disukai untuk menyambungkan ke sumber data dan menginisialisasi objek database Anda.
Jika 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 di CDatabase
objek dan tersedia dengan memanggil GetConnect
fungsi anggota.
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 sehingga Anda dapat menggunakannya kembali lain kali aplikasi Anda memanggil Open
pada CDatabase
objek.
Anda juga dapat menggunakan string koneksi untuk beberapa tingkat otorisasi masuk (masing-masing untuk objek yang berbedaCDatabase
) atau untuk menyampaikan informasi spesifik sumber data lainnya. Untuk informasi selengkapnya tentang string koneksi, lihat Bab 5 di Windows SDK.
Dimungkinkan untuk upaya koneksi kehabisan waktu jika, misalnya, host DBMS tidak tersedia. Jika upaya koneksi gagal, Open
melempar CDBException
.
Contoh
// m_dbCust is a CDatabase object embedded in a CDocument class
if (bDefault)
{
// Connect the object to a data source (no password)
// the ODBC connection dialog box will always remain hidden
m_dbCust.Open(_T("MFC_ODBCTest"), FALSE, FALSE, _T("ODBC;UID=JOES"));
}
else
{
// ...Or, query the user for all connection information
m_dbCust.Open(NULL);
}
CDatabase::OpenEx
Panggil fungsi anggota ini untuk menginisialisasi objek yang baru dibangun CDatabase
.
virtual BOOL OpenEx(
LPCTSTR lpszConnectString,
DWORD dwOptions = 0);
Parameter
lpszConnectString
Menentukan string koneksi ODBC. Ini termasuk nama sumber data serta informasi opsional lainnya, seperti ID pengguna dan kata sandi. Misalnya, "DSN=SQLServer_Source;UID=SA;PWD=abc123"
adalah kemungkinan string koneksi. Perhatikan bahwa jika Anda meneruskan NULL
, lpszConnectString
kotak dialog Sumber Data akan meminta pengguna untuk memilih sumber data.
dwOptions
Bitmask yang menentukan kombinasi nilai berikut. Nilai default adalah 0, yang berarti bahwa database akan dibuka sebagai dibagikan dengan akses tulis, DLL Pustaka Kursor ODBC tidak akan dimuat, dan kotak dialog koneksi ODBC akan ditampilkan hanya jika tidak ada informasi yang cukup untuk membuat koneksi.
CDatabase::openExclusive
Tidak didukung dalam versi pustaka kelas ini. Sumber data selalu dibuka sebagai dibagikan (tidak eksklusif). Saat ini, pernyataan gagal jika Anda menentukan opsi ini.CDatabase::openReadOnly
Buka sumber data sebagai baca-saja.CDatabase::useCursorLib
Muat DLL Pustaka Kursor ODBC. Pustaka kursor menutupi beberapa fungsionalitas driver ODBC yang mendasarinya, secara efektif mencegah penggunaan dinaset (jika driver mendukungnya). Satu-satunya kursor yang didukung jika pustaka kursor dimuat adalah rekam jepret statis dan kursor khusus terusan. Jika Anda berencana untuk membuat objek recordset langsung dariCRecordset
tanpa turunan darinya, Anda tidak boleh memuat pustaka kursor.CDatabase::noOdbcDialog
Jangan tampilkan kotak dialog koneksi ODBC, terlepas dari apakah cukup informasi koneksi yang disediakan.CDatabase::forceOdbcDialog
Selalu tampilkan kotak dialog koneksi ODBC.
Tampilkan Nilai
Bukan nol jika koneksi berhasil dibuat; jika tidak, 0 jika pengguna memilih Batal saat menyajikan kotak dialog yang meminta informasi koneksi lainnya. Dalam semua kasus lain, kerangka kerja melemparkan pengecualian.
Keterangan
Objek database Anda harus diinisialisasi sebelum Anda dapat menggunakannya untuk membuat objek kumpulan rekaman.
lpszConnectString
Jika parameter dalam panggilan Anda OpenEx
tidak berisi informasi yang cukup untuk membuat koneksi, driver ODBC membuka kotak dialog untuk mendapatkan informasi yang diperlukan dari pengguna, asalkan Anda belum mengatur CDatabase::noOdbcDialog
atau CDatabase::forceOdbcDialog
dalam dwOptions
parameter. Saat Anda memanggil OpenEx
, string koneksi Anda, lpszConnectString
, disimpan secara privat di CDatabase
objek dan tersedia dengan memanggil GetConnect
fungsi anggota.
Jika mau, Anda dapat membuka kotak dialog Anda sendiri sebelum memanggil OpenEx
untuk mendapatkan informasi dari pengguna, seperti kata sandi, lalu menambahkan informasi tersebut ke string koneksi Anda meneruskan ke OpenEx
. Atau Anda mungkin ingin menyimpan string koneksi yang Anda lewati sehingga Anda dapat menggunakannya kembali lain kali aplikasi Anda memanggil OpenEx
pada CDatabase
objek.
Anda juga dapat menggunakan string koneksi untuk beberapa tingkat otorisasi masuk (masing-masing untuk objek yang berbedaCDatabase
) atau untuk menyampaikan informasi spesifik sumber data lainnya. Untuk informasi selengkapnya tentang string koneksi, lihat Bab 6 di Referensi Programmer ODBC.
Dimungkinkan untuk upaya koneksi kehabisan waktu jika, misalnya, host DBMS tidak tersedia. Jika upaya koneksi gagal, OpenEx
melempar CDBException
.
Contoh
// m_dbCust is a CDatabase object embedded in a CDocument class.
// Connect the object to a read-only data source where
// the ODBC connection dialog box will always remain hidden
m_dbCust.OpenEx(_T("DSN=MFC_ODBCTest;UID=JOES"),
CDatabase::openReadOnly | CDatabase::noOdbcDialog);
CDatabase::Rollback
Panggil fungsi anggota ini untuk membalikkan perubahan yang dilakukan selama transaksi.
BOOL Rollback();
Tampilkan Nilai
Bukan nol jika transaksi berhasil dibalik; jika tidak, 0. Rollback
Jika panggilan gagal, sumber data dan status transaksi tidak terdefinisi. Jika Rollback
mengembalikan 0, Anda harus memeriksa sumber data untuk menentukan statusnya.
Keterangan
Semua CRecordset
AddNew
panggilan , Edit
, Delete
, dan Update
yang dijalankan sejak yang terakhir BeginTrans
digulung balik ke status yang ada pada saat panggilan tersebut.
Setelah panggilan ke Rollback
, transaksi selesai, dan Anda harus memanggil BeginTrans
lagi untuk transaksi lain. Rekaman yang saat ini sebelum Anda panggil BeginTrans
menjadi rekaman saat ini lagi setelah Rollback
.
Setelah pemutaran kembali, rekaman yang sedang berjalan sebelum pemutaran kembali tetap terkini. Untuk detail tentang status kumpulan rekaman dan sumber data setelah pembatalan, lihat artikel Transaksi (ODBC).
Contoh
Lihat artikel Transaksi: Melakukan Transaksi dalam Recordset (ODBC).
CDatabase::SetLoginTimeout
Panggil fungsi anggota ini — sebelum Anda memanggil OpenEx
atau Open
— untuk mengambil alih jumlah detik default yang diizinkan sebelum waktu koneksi sumber data yang dicoba habis.
void SetLoginTimeout(DWORD dwSeconds);
Parameter
dwSeconds
Jumlah detik yang diperbolehkan sebelum waktu upaya koneksi habis.
Keterangan
Upaya koneksi mungkin kehabisan waktu jika, misalnya, DBMS tidak tersedia. Panggil SetLoginTimeout
setelah Anda membuat objek yang tidak diinisialisasi CDatabase
tetapi sebelum Anda memanggil OpenEx
atau Open
.
Nilai default untuk batas waktu masuk adalah 15 detik. Tidak semua sumber data mendukung kemampuan untuk menentukan nilai batas waktu masuk. Jika sumber data tidak mendukung batas waktu, Anda mendapatkan output pelacakan tetapi bukan pengecualian. Nilai 0 berarti "tak terbatas."
CDatabase::SetQueryTimeout
Panggil fungsi anggota ini untuk mengambil alih jumlah detik default untuk diizinkan sebelum operasi berikutnya pada waktu sumber data yang terhubung habis.
void SetQueryTimeout(DWORD dwSeconds);
Parameter
dwSeconds
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 kumpulan rekaman AddNew
, Update
atau Delete
anggota jika Anda ingin mengubah nilai batas waktu kueri. Pengaturan memengaruhi semua Open
panggilan berikutnya , , AddNew
, Update
dan Delete
ke kumpulan rekaman apa pun yang terkait dengan objek ini CDatabase
. Mengubah nilai batas waktu kueri untuk kumpulan rekaman setelah pembukaan tidak mengubah nilai untuk kumpulan rekaman. Misalnya, operasi berikutnya Move
tidak menggunakan nilai baru.
Nilai default untuk batas waktu kueri adalah 15 detik. Tidak semua sumber data mendukung kemampuan untuk mengatur nilai batas waktu kueri. Jika Anda menetapkan nilai batas waktu kueri 0, tidak ada batas waktu yang terjadi; komunikasi dengan sumber data mungkin berhenti merespons. Perilaku ini mungkin berguna selama pengembangan. Jika sumber data tidak mendukung batas waktu, Anda mendapatkan output pelacakan tetapi bukan pengecualian.