本文为数据库编程入门培训的第二讲,主要讲述一下数据库编程具体怎么实现。示例代码在本文后面的附件中能够下载。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