生活随笔
收集整理的這篇文章主要介紹了
数据库编程入门培训(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??????本文為數據庫編程入門培訓的第二講,主要講述一下數據庫編程具體怎么實現。示例代碼在本文后面的附件中可以下載。
??????如上篇文章所描述的那樣,由于Microsoft Access數據庫比較直觀,適合初學者入門學習,故我在此依然以Access為例,示范如何對數據庫進行編程練習; 而且,我使用的編程示例是基于Microsoft公司提供的Dao技術,雖然該技術已經早已過時,但是由于它的編程簡單、明晰,很適合初學者,故依然在此使用Dao技術做數據庫編程的示范,希望數據庫編程高手們能夠理解。
???????回顧上篇文章描述的,我們對數據庫的操作主要分為以下幾個方面:
????????? 1. 初始化/逆初始化數據庫引擎 (操作數據庫引擎)
??????????2. 創建/打開/關閉數據庫 (操作數據庫文件)
??????????3. 查找/打開/新增/刪除一個數據表 (操作數據庫的表)
????????? 4. 為一個新數據表添加字段,刪除字段,修改字段屬性 (操作數據庫的字段)
?????? ?? 5. 添加/刪除/修改一條記錄 (操作記錄集)
????????? 6. 根據條件檢索出滿足條件的記錄集 (查詢和檢索)
????????? 7. 其他:移動到下一條記錄,獲取表的總個數,獲取記錄的總數……
???????因此,我將通過示例代碼來實現上述的某些基本功能,具體的各個類各個函數的用法,大家可以自己查看MSDN,里面都有非常詳細的說明。
???????????????????#include?<afxdao.h> ?#include?<iostream> ??????#pragma?warning(disable?:?4995) ???????int?_tmain(int?argc,?_TCHAR*?argv[]) ?{ ??????????CDaoDatabase?m_db;???? ????????????????CDaoTableDef?m_tableDef(&m_db); ???????????CDaoRecordset?rs(&m_db); ???????????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 ?????????{ ??????????????????????????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 ???????????AfxDaoTerm(); ??????std::cout?<<?"?數據庫文件已經輸出到D://user.mdb"?<<?std::endl; ????? ?????int?temp; ?????std::cin?>>?temp; ??????return?1; ?} ? ????? 希望大家仔細閱讀上述代碼,并通過MSDN的幫助,真正對數據庫編程有一個直觀的認識,以后進行其他類型的數據庫編程就可以很快地上手了。
??????為了檢驗大家是否真正了解和掌握了數據庫編程,下面我出一道題目,希望大家依靠自己的能力把它實現,權當練習練習。
題目:簡單的登陸系統
提供簡單的注冊功能,注冊信息包括:
用戶名(不允許重復),登錄密碼,性別,年齡
使用Access數據庫存儲上述信息
程序提供如下功能:
1. 啟動程序后,自動創建數據庫文件、用戶信息表、相應的字段
2. 能夠刪除數據表,然后重建數據表
3. 能夠新增一條用戶記錄
4. 能夠顯示數據庫中的全部用戶名
5. 能夠顯示指定用戶名的個人信息
6. 能夠刪除指定用戶名的記錄
7. 能夠修改指定用戶名的用戶的年齡
8. 能夠查詢顯示“年齡>18歲”的所有用戶名
?
?
總結
以上是生活随笔為你收集整理的数据库编程入门培训(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。