最近在項目中添加了用戶數據管理功能,使用MFC ODBC連接SQL Server2005數據庫。由於以前沒有接觸過數據庫具體的實現,因此花了兩周時間學習了數據庫的知識,並實現了項目中的基本功能。感覺雖然存在很多問題,但還是有不少收獲。下面總結一下,希望能夠給跟我一樣的新手們一個參考,大家共同學習!
要在應用中實現一個基本的數據庫系統,除了要有數據庫,還要將自己的程序與數據庫之間建立連接,在程序中實現對數據庫的訪問。
使用MFC ODBC類訪問數據庫,主要有以下幾個步驟:
1、建立數據庫
這一步比較簡單,直接打開SQL Server Management Studio,根據自己需要設計數據庫中的表,及其之間的依賴關系等等!要想設計一個完美的數據庫,就必須了解數據庫的基本知識。這裡不再具體說了。這裡我們假設我們的數據庫名字為Test01
2、配置數據源
數據庫設計建立完成後,它只是單獨的幾張表,我們並不能在程序中去訪問它,因為程序並不知道數據庫在哪裡。因此,就要在應用程序跟數據庫之間建立連接。
配置數據源說通俗了就是為數據庫創建一個對外的窗口,應用程序通過這個窗口來訪問數據庫中的數據。具體配置步驟為:
1) 打開 控制面板--〉管理工具--〉數據源,在用戶DSN面板選擇 “添加”
2) 在數據源驅動程序中選擇 “SQL Server” --〉完成,即打開 “創建到SQL Server 的新數據源”
3) 在“數據源名稱”中填入名稱,我們填 TestSQL01,然後選擇 服務器,在其中選擇要連接到的SQL Server服務器。(如果你電腦的SQL Server服務打開的話,就會有自己的主機名。或者選擇網絡上的某個SQL Server。
4) 點擊 下一步 配置認證信息
5) 配置完後點擊 下一步, 選中 “更改默認的數據庫為”復選框,在下拉中選擇自己剛才建立的要連接的數據庫。 (這一步很重要,一般一個Server上會有多個數據庫,如果不更改數據源的默認數據庫,你 建立的數據源將連接到默認的數據庫,這樣就會造成程序中執行SQL語句時“對象名無效”的錯誤,即找不到你指定的數據表等)
6) 選擇完數據庫後直接 下一步--〉完成 就完成了數據源的配置。接下來會出現配置數據源的基本信息,可以通過 “測試數據源”來測試數據源是否配置成功。
3、 數據庫的連接
建立完數據庫,又配置好了數據源,接下來就可以在程序中通過數據源來訪問數據庫了。
1) 首先要在程序中引入MFC ODBC數據庫的定義文件 #include <afxdb.h>
2) 定義CDataBase數據庫對象, CDataBase m_db;
3) 利用CDataBase類的OpenEx函數建立和數據庫的連接;
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
/*這裡的TestSQL01 即為步驟2中建立的數據源,然後根據OpenEx函數格式填入參數,主要是用戶名、密碼之類,這裡沒有設置,所以就沒有*/
具體連接還要捕捉OpenEx可能拋出的異常:
TRY
{
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
rs.m_pDatabase = &m_db;
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
4、 數據庫操作
在完成了上面的步驟後,就可以使用SQL語句對數據庫進行操作了。基本的操作有 查詢、添加、修改、刪除等。這裡主要說一下查詢和添加,其他操作都與添加步驟類似。
1)查詢
查詢的基本步驟可以看下面的這段代碼:
2)插入
相對於查詢,插入、刪除、更改操作就簡單得多了。
catch(CDBException * ex)
...{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
catch(CException * e)
...{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
經過上面的這些步驟,我們已經能夠在程序中實現數據庫的基本操作了。自己也是新手,能力有限!就先說到這裡吧。要學的東西還有很多~~