天天看點

【轉】MFC 連接配接SQL SERVER(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)查詢

     查詢的基本步驟可以看下面的這段代碼:

【轉】MFC 連接配接SQL SERVER(ODBC方式)

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

【轉】MFC 連接配接SQL SERVER(ODBC方式)
【轉】MFC 連接配接SQL SERVER(ODBC方式)

     CString psd;    //存放查詢結果

【轉】MFC 連接配接SQL SERVER(ODBC方式)

     TRY

【轉】MFC 連接配接SQL SERVER(ODBC方式)

     {

【轉】MFC 連接配接SQL SERVER(ODBC方式)

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

【轉】MFC 連接配接SQL SERVER(ODBC方式)

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

【轉】MFC 連接配接SQL SERVER(ODBC方式)

     }

【轉】MFC 連接配接SQL SERVER(ODBC方式)

     CATCH(CDBException,ex)

【轉】MFC 連接配接SQL SERVER(ODBC方式)
【轉】MFC 連接配接SQL SERVER(ODBC方式)

         AfxMessageBox(ex->m_strError);

【轉】MFC 連接配接SQL SERVER(ODBC方式)

         AfxMessageBox(ex->m_strStateNativeOrigin);

【轉】MFC 連接配接SQL SERVER(ODBC方式)
【轉】MFC 連接配接SQL SERVER(ODBC方式)

         AND_CATCH(CMemoryException,pEx)

【轉】MFC 連接配接SQL SERVER(ODBC方式)

         pEx->ReportError();

【轉】MFC 連接配接SQL SERVER(ODBC方式)

         AfxMessageBox(_T("memory exception"));

【轉】MFC 連接配接SQL SERVER(ODBC方式)
【轉】MFC 連接配接SQL SERVER(ODBC方式)

     END_CATCH

              2)插入

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

【轉】MFC 連接配接SQL SERVER(ODBC方式)

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

【轉】MFC 連接配接SQL SERVER(ODBC方式)

             try

【轉】MFC 連接配接SQL SERVER(ODBC方式)
【轉】MFC 連接配接SQL SERVER(ODBC方式)

             ...{                

【轉】MFC 連接配接SQL SERVER(ODBC方式)

                 m_db.ExecuteSQL(sql);

【轉】MFC 連接配接SQL SERVER(ODBC方式)

             }

       ..............