VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 335|回复: 0

VC++高级班之数据库篇-[6]ADO数据库编程概述

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-6-7 01:07:42 | 显示全部楼层 |阅读模式
①、数据库编程概述:
◆ ODBC API(Open DataBase Connectivity API);
◆ MFC ODBC(Microsoft Foundation Classes ODBC);
◆ DAO(Data Access Object);
◆ OLE DB(Object Link and Enmedding DataBase);
◆ ADO(ActiveX Data Object);

本教程主要以ADO为版本进行讲解,其他数据库的操作方式的优缺点大家可以网上查找相关资料。
===================================================
②、ADO的优点:
◆ 易于使用,速度快,内存占用少和使用较少的网络流量;
◆ 兼容性广泛,兼容多种开发语言:VB、VC、Java 等等;
◆ 良好的扩展性,不局限于关系型数据库;
◆ 支持事物处理,支持成批修改数据库内容,然后一次性写入到数据库,提高效率;
◆ 支持带参数和返回值的存储过程;
===================================================
③、ADO对象模型简介:
ADO主要包含7个对象,3个独立对象和(依赖独立对象才能使用的)4个非独立对象。
1、Connection:连接对象,用于创建与数据源的连接。在使用其他对象之前必须先建立数据源连接,然后在连接对象上创建和使用其他对象。
2、Command:命令对象,用于执行动作查询,比如创建/删除数据库、执行返回数据集、删除记录等操作。
3、Recordset:记录集对象,保存来自基本表或命令对象返回的结果。使用记录集对象几乎可以完成所有的数据集操作。
★ 在记录集中总是有一个当前的记录;
★ 所有的 Recordset 对象都按照行列方式的表状结构进行管理;
★ 每一行对应一个记录 Record,每一列对应一个域 Field。

4、Field:字段对象,对应 Recordset 对象中的一列,依赖于记录集对象(Recordset)使用,可使用Fields集合获得记录集汇总每个字段的信息。
5、Property:属性对象,每个连接对象(Connection)、命令对象(Command)、记录集对象(Recordset)以及字段对象(Field)都有一个属性对象集合。
使用属性对象可以访问特定对象的主要信息,例如获得数据库中表的名称。
6、Parameter:参数对象,依赖于命令对象(Command)使用,用于为参数查询提供数据。
同时使用参数对象和命令对象,可使数据库队查询进行预编译,从而提高执行速度。
7、Error:错误对象,依赖连接对象(Connection)使用。

为了能更好的让大家理解他们之间的关系,找到了一些关系说明的图片让大家理解。
===================================================
④、数据类型转换:
ADO是基于COM技术的,COM中使用的数据类型和C++中是不同的,这就涉及到数据类型的转换操作;
◆ VARIANT 是一个结构化的数据类型,可以表示相当多的数据类型;
◆ BSTR 也是一个结构化的数据类型,包括了字符串本身及串的长度;
★ _variant_t 类封装并管理 VARIANT 这一数据类型;
★ _bstr_t 类封装并管理 BSTR 这一数据类型;
使用以上两个封装类可以方便地把 C++ 的数据类型转换成 COM 的数据类型,后续课程会教大家使用的。
===================================================
⑤、错误处理:在编写ADO程序时,对所有调用ADO对象方法的语句一定要用 try-catch 来捕获异常,
否则发生异常时,程序会异常退出,一般的错误处理编程模式如下:
try {
        HRESULT hr = xxx.yyy();
        if(FAILED(hr))
                AfxMessageBox(_T("错误提示"));
}
catch(_com_error &e){
        _bstr_t bstrSource(e.Source());
        _bstr_t bstrDescription(e.Description());
        TRACE(_T("Code = %081x\n", e.Error()));
        TRACE(_T("Code meaning = %s\n", e.ErrorMessage()));
        TRACE(_T("Source = %s\n", (LPCTSTR)bstrSource));
        TRACE(_T("Description = %s\n", (LPCTSTR)bstrDescription));
}
===================================================
⑥、ADO编程的一般流程:
⑴ 连接到数据源:一般情况下,在执行数据库操作之前,都会先使用Connection对象连接到数据源;
⑵ 指定对数据源的命令:在该步骤中,通常涉及到Command对象,当然也可以直接使用Recordset对象执行查询命令,
但如果查询或者存储过程是需要参数的,就只能使用Command对象;
⑶ 执行命令;
⑷ 处理结束:如果上述命令是返回记录的操作,则在记录集对象中缓存了这些返回记录,便于在程序中进行操作,比如获得记录字段,统计等;
⑸ 更改数据:如果需要,可以在缓存记录的记录集中更改数据,然后回写到数据库中,更改数据;
⑹ 关闭记录集:记录集使用完毕后,应关闭记录集,以释放相关的数据和资源;
⑺ 关闭连接:释放资源;
===================================================
※※※ 小作业:
1、了解多种数据库操作方式的异同点;
2、深入了解ADO数据库编程技术的相关知识。
------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
VC驿站Vip会员售后答疑截图【持续更新】:https://www.cctry.com/thread-288054-1-1.html
教程介绍及详情请见:https://www.cctry.com/static/vip/index.html
VC驿站Vip会员详情请见:https://www.cctry.com/static/vip/index.html





上一篇:VC++高级班之数据库篇-[5]SQL之数据操纵语言DML的简介及使用
下一篇:VC++高级班之数据库篇-[7]实例开发的前期准备

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-11 22:48

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表