當前位置:編程學習大全網 - 編程語言 - Visual C++ SQL嵌入式編程

Visual C++ SQL嵌入式編程

以前我寫的時候遇到的問題搜到的資料 妳看下有幫助不

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)查詢

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

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

}

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

  • 上一篇:有沒有那種雕刻機比較多功能的,能加工亞克力木板石材,最好鋁板也能切割,大神賜教壹下吧
  • 下一篇:讓好習慣走進心中作文800
  • copyright 2024編程學習大全網