本文爲數據庫編程入門培訓的第二講,主要講述一下數據庫編程具體怎麼實現。示例代碼在本文後面的附件中能夠下載。ios
如上篇文章所描述的那樣,因爲Microsoft Access數據庫比較直觀,適合初學者入門學習,故我在此依然以Access爲例,示範如何對數據庫進行編程練習; 並且,我使用的編程示例是基於Microsoft公司提供的Dao技術,雖然該技術已經早已過期,可是因爲它的編程簡單、明晰,很適合初學者,故依然在此使用Dao技術作數據庫編程的示範,但願數據庫編程高手們可以理解。數據庫
回顧上篇文章描述的,咱們對數據庫的操做主要分爲如下幾個方面:編程
1. 初始化/逆初始化數據庫引擎 (操做數據庫引擎)
2. 建立/打開/關閉數據庫 (操做數據庫文件)
3. 查找/打開/新增/刪除一個數據表 (操做數據庫的表)
4. 爲一個新數據表添加字段,刪除字段,修改字段屬性 (操做數據庫的字段)
5. 添加/刪除/修改一條記錄 (操做記錄集)
6. 根據條件檢索出知足條件的記錄集 (查詢和檢索)
7. 其餘:移動到下一條記錄,獲取表的總個數,獲取記錄的總數……微信
所以,我將經過示例代碼來實現上述的某些基本功能,具體的各個類各個函數的用法,你們能夠本身查看MSDN,裏面都有很是詳細的說明。函數
- //////////////////////////////////////////////////////////////////////////
- /// COPYRIGHT NOTICE
- /// Copyright (c) 2009, 華中科技大學tickTick Group (版權聲明)
- /// All rights reserved.
- ///
- /// @file testDB.cpp
- /// @brief 數據庫測試文件
- ///
- /// 本文件示範了Dao數據庫訪問方法
- ///
- /// @version 1.0
- /// @author 盧俊
- /// @date 2010/05/10
- ///
- ///
- /// 修訂說明:
- //////////////////////////////////////////////////////////////////////////
-
- // 須要使用Dao技術訪問數據庫,必須包含afxdao.h
- #include <afxdao.h>
- #include <iostream>
-
- // 由於DAO技術如今微軟已經不在作技術支持了,
- // 說在將來版本中可能再也不支持此,因此會有警告,
- // 但由於其簡單,易於初學者學習,故在此我依然拿它作例子
- // 這裏,disabled掉這個警告。
- #pragma warning(disable : 4995)
-
- // 工程配置注意事項
- // 因爲CDaoDatabase是派生於MFC的CObject類,故工程中須要加入MFC共享庫的支持
- // 具體配置方法,修改VS2008左側的工程名稱上右鍵->屬性(properties)->常規(general)->使用MFC(use of mfc)
- // 選擇Use MFC in a Shared DL
-
- int _tmain(int argc, _TCHAR* argv[])
- {
- // 數據庫操做類
- CDaoDatabase m_db;
-
- // 數據庫用戶信息表操做對象
- // MSDN上有說明,該類對象建立時須要綁定表所依附的數據庫對象
- CDaoTableDef m_tableDef(&m_db);
-
- // 建立記錄集對象
- CDaoRecordset rs(&m_db);
-
- // DAO引擎初始化
- AfxDaoInit();
-
- //建立無密碼的數據庫
- TRY
- {
- m_db.Create(_T("D:\\user.mdb"),dbLangGeneral,dbVersion30);
- }
- CATCH(CDaoException, e)
- {
- // 經過這條語句能夠將錯誤描述字符串存儲到szError中
CString szError = e->m_pErrorInfo-> m_strDescription;
- std::cout << "error occur !" <<std::endl;
- return 0;
- }
- END_CATCH
-
- // 打開數據庫
- if (!m_db.IsOpen())
- {
- TRY
- {
- // 參數1:數據庫全路徑,參數2:是否獨佔,參數3:是否只讀模式,參數4:密碼
- m_db.Open(_T("D:\\user.mdb"), TRUE, FALSE, _T(""));
- }
- CATCH(CDaoException, e)
- {
- std::cout << "error occur !" <<std::endl;
- return 0;
- }
- END_CATCH
- }
-
- // 建立表
- TRY
- {
- m_tableDef.Create(_T("登陸信息表"));
- }
- CATCH(CDaoException, e)
- {
- std::cout << "error occur !" <<std::endl;
- return 0;
- }
- END_CATCH
-
- // 建立字段
- TRY
- {
- // 學號
- m_tableDef.CreateField(_T("學號"),dbText,200,dbVariableField|dbUpdatableField);
- // 密碼
- m_tableDef.CreateField(_T("密碼"),dbText,200,dbVariableField|dbUpdatableField);
- // 年齡
- m_tableDef.CreateField(_T("年齡"),dbLong,200,dbVariableField|dbUpdatableField);
-
- // 添加到數據庫中
- m_tableDef.Append();
- }
- CATCH(CDaoException, e)
- {
- std::cout << "error occur !" <<std::endl;
- return 0;
- }
- END_CATCH
-
- // 添加一條新的記錄
- TRY
- {
- // 打開記錄集
- rs.Open(&m_tableDef);
-
- // 移動到記錄集的尾部
- if (!rs.IsEOF())
- {
- rs.MoveLast();
- }
-
- // 準備添加一條新的記錄
- rs.AddNew();
- // 學號
- rs.SetFieldValue(_T("學號"),_T("012006011208"));
- // 密碼
- rs.SetFieldValue(_T("密碼"),_T("123456"));
- // 年齡
- rs.SetFieldValue(_T("年齡"),_T("18"));
- // 執行添加操做到數據庫
- rs.Update();
-
- // 關閉記錄集
- rs.Close();
- }
- CATCH(CDaoException, e)
- {
- std::cout << "error occur !" <<std::endl;
- return 0;
- }
- END_CATCH
-
- // 獲取用戶記錄
- TRY
- {
- // 打開記錄集
- rs.Open(&m_tableDef);
-
- // 移動到第一條記錄
- rs.MoveFirst();
-
- COleVariant coleUserNo;
- COleVariant colePassword;
- COleVariant coleAge;
-
- // 獲取值
- rs.GetFieldValue(_T("學號"), coleUserNo);
- rs.GetFieldValue(_T("密碼"), colePassword);
- rs.GetFieldValue(_T("年齡"), coleAge);
-
- // 提取出整型數
- LONG age = coleAge.lVal;
-
- // 提取字符串數據
- CString szUserNo = V_BSTR(&coleUserNo);
- CString szPassword = V_BSTR(&colePassword);
-
- // 關閉記錄集
- rs.Close();
-
- }
- CATCH(CDaoException, e)
- {
- std::cout << "error occur !" <<std::endl;
- return 0;
- }
- END_CATCH
-
- // 關閉數據庫
- TRY
- {
- if (m_db.IsOpen())
- {
- m_db.Close();
- }
- }
- CATCH(CDaoException, e)
- {
- std::cout << "error occur !" <<std::endl;
- }
- END_CATCH
-
- // DAO引擎註銷
- AfxDaoTerm();
-
- std::cout << " 數據庫文件已經輸出到D://user.mdb" << std::endl;
-
- int temp;
- std::cin >> temp;
-
- return 1;
- }
但願你們仔細閱讀上述代碼,並經過MSDN的幫助,真正對數據庫編程有一個直觀的認識,之後進行其餘類型的數據庫編程就能夠很快地上手了。學習
爲了檢驗你們是否真正瞭解和掌握了數據庫編程,下面我出一道題目,但願你們依靠本身的能力把它實現,權當練習練習。測試
題目:簡單的登錄系統.net
提供簡單的註冊功能,註冊信息包括:對象
用戶名(不容許重複),登陸密碼,性別,年齡blog
使用Access數據庫存儲上述信息
程序提供以下功能:
1. 啓動程序後,自動建立數據庫文件、用戶信息表、相應的字段
2. 可以刪除數據表,而後重建數據表
3. 可以新增一條用戶記錄
4. 可以顯示數據庫中的所有用戶名
5. 可以顯示指定用戶名的我的信息
6. 可以刪除指定用戶名的記錄
7. 可以修改指定用戶名的用戶的年齡
8. 可以查詢顯示「年齡>18歲」的全部用戶名
結束語
免費學習更多精品課程,登陸樂搏學院官網http://www.learnbo.c/
或關注咱們的官方微博微信,還有更多驚喜哦~
本文出自 「Jhuster的專欄」 博客,請務必保留此出處http://ticktick.blog.51cto.com/823160/315190