程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用MFC ODBC +SQL Server2005 實現數據庫編程

使用MFC ODBC +SQL Server2005 實現數據庫編程

編輯:關於SqlServer

最近在項目中添加了用戶數據管理功能,使用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)查詢

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

 




                      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);
            }

            catch(CDBException * ex)
            ...{
                AfxMessageBox(ex->m_strError);
                AfxMessageBox(ex->m_strStateNativeOrigin);
            }
            catch(CException * e)
            ...{
                TCHAR&nbsp;szError[100];
                e->GetErrorMessage(szError,100);
                AfxMessageBox(szError);
            }

      經過上面的這些步驟,我們已經能夠在程序中實現數據庫的基本操作了。自己也是新手,能力有限!就先說到這裡吧。要學的東西還有很多~~

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved