MFC中連接sql數據庫的簡單方法

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 FROMUserInfo    WHERE (UserID =  123“)       //要執行的SQL語句

     CStringpsd;    //
存放查詢結果
     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);
            }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章