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)查詢
查詢的基本步驟可以看下面的這段代碼:

CString sql = _T("SELECT Password FROM UserInfo WHERE (UserID = 123“) //要執行的SQL語句


CString psd; //存放查詢結果

TRY

{

rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); //打開查詢記錄

rs.GetFieldValue(_T("Password"),psd); //得到資料

}

CATCH(CDBException,ex)


AfxMessageBox(ex->m_strError);

AfxMessageBox(ex->m_strStateNativeOrigin);


AND_CATCH(CMemoryException,pEx)

pEx->ReportError();

AfxMessageBox(_T("memory exception"));


END_CATCH
2)插入
相對于查詢,插入、删除、更改操作就簡單得多了。

CString sql = _T("USE Test01 INSERT UserInfo(UserID,UserName) VALUES(" 123, 'Bob');

try
...{
m_db.ExecuteSQL(sql);
}
..............