04CDatabase类
要建立與數(shù)據(jù)源的連接,首先應構造一個CDatabase對象,然后再調用CDatabase的Open成員函數(shù).Open函數(shù)負責建立連接,其聲明為
virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC;”, BOOL bUseCursorLib = TRUE ); throw( CDBException, CMemoryException );
參數(shù)lpszDSN指定了數(shù)據(jù)源名(構造數(shù)據(jù)源的方法將在后面介紹),在lpszConnect參數(shù)中也可包括數(shù)據(jù)源名,此時lpszDSN必需為NULL,若在函數(shù)中未提供數(shù)據(jù)源名且使lpszDSN為NULL,則會顯示一個數(shù)據(jù)源對話框,用戶可以在該對話框中選擇一個數(shù)據(jù)源.參數(shù)bExclusive說明是否獨占數(shù)據(jù)源,由于目前版本的類庫還不支持獨占方式,故該參數(shù)的值應該是FALSE,這說明數(shù)據(jù)源是被共享的.參數(shù)bReadOnly若為TRUE則對數(shù)據(jù)源的連接是只讀的.參數(shù)lpszConnect指定了一個連接字符串,連接字符串中可以包括數(shù)據(jù)源名、用戶帳號(ID)和口令等信息,字符串中的"ODBC"表示要連接到一個ODBC數(shù)據(jù)源上.參數(shù)bUseCursorLib若為TRUE,則會裝載光標庫,否則不裝載,快照需要光標庫,動態(tài)集不需要光標庫. 若連接成功,函數(shù)返回TRUE,若返回FALSE,則說明用戶在數(shù)據(jù)源對話框中按了Cancel按鈕。若函數(shù)內部出現(xiàn)錯誤,則框架會產生一個異常。
下面是一些調用Open函數(shù)的例子。
CDatabase m_db; //在文檔類中嵌入一個CDatabase對象
//連接到一個名為"Student Registration"的數(shù)據(jù)源
m_db.Open("Student Registration");
//在連接數(shù)據(jù)源的同時指定了用戶帳號和口令
m_db.Open(NULL,FALSE,FALSE,"ODBC;DSN=Student Registration;UID=ZYF;PWD=1234");
m_db.Open(NULL); //將彈出一個數(shù)據(jù)源對話框
要從一個數(shù)據(jù)源中脫離,可調用函數(shù)Close。在脫離后,可以再次調用Open函數(shù)來建立一個新的連接.調用IsOpen可判斷當前是否有一個連接,調用GetConnect可返回當前的連接字符串。函數(shù)的聲明為
virtual void Close( );
BOOL IsOpen( ) const; //返回TRUE則表明當前有一個連接
const CString& GetConnect( ) const;
CDatabase的析構函數(shù)會調用Close,所以只要刪除了CDatabase對象就可以與數(shù)據(jù)源脫離。
總結
以上是生活随笔為你收集整理的04CDatabase类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 控件的WM_NOTIFY消息映射
- 下一篇: 三分钟带你对 Softmax 划重点