ODBC、ADO

一、VC访问数据库的技术

  1、ODBC --Open Database Connectivity微软开放式数据互联,一组用于访问和操作数据库的API,可以访问不同的数据库产品,但只能访问关系型数据库。MFC将这组API函数封装成ODBC类,使用前需要将不同的数据库设置为ODBC数据源。

  2、DAO --基于ODBC的,目前已经被淘汰

  3、OLE DB  --基于COM技术的,提供了一组用于访问和操作数据库的接口。既可以访问关系型又可以访问非关系型数据,性能也有了很大提高。缺点是学习难度大,对程序员要求高,并未流行起来。

  4、ADO --基于OLE DB,对OLE DB又进行了封装,提供了一组简单的接口,逐渐流行起来,成为使用最广泛的技术之一。

  5、ADO.NET --基于.net平台的,适用于该平台之上的VB、VC、C#等各种语言。是一组用于访问和操作数据库的类。

二、ODBC类的使用

  1、相关类

    CDatabase类 -提供了数据库的连接和关闭功能,另外还提供了执行Sql语句的功能。

    CRecordset类 -提供了对数据表中数据的操作。

    以上两个类需包含头文件 #include <afxdb.h>

  2、使用步骤:

    2.1设置ODBC数据源

      控制面板->管理工具->数据源ODBC

      

    2.2使用ODBC类

      1--连接ODBC数据源 CDatabase::Open

      2--执行sql语句  CDatabase::ExecuteSQL

      3--打开数据表  CRecordset::Open

      4--获取字段数量  CRecordset::GetODBCFieldCount

      5--获取字段的信息  CRecordset::GetODBCFieldInfo

      6--获取字段的值   CRecordset::GetFieldValue

      7--记录的指针移动  CRecordset::MoveFirst/MoveLast/Move/MoveNext/MovePrevious

        CRecordset::IsBOF  //是否移动到了最开始

        CRecordset::IsEOF  //是否移动到了最末尾

      8--关闭记录集  CRecordset::Close

      9--关闭数据源  CDatabase::Close

   了解 CRecordView -显示数据库中记录的视图

三、使用ADO访问数据库

  1、ADO的文件:msado15.dll

    所在路径-C:/Program Files/Common Files/System/ado/msado15.dll

  2、导入ADO组件

    #import "组件文件所在路径" no_namespace rename("EOF","adoEOF")

    在项目头文件StdAfx.h中添加以上导入命令,编译后,在Debug文件下生成msado15.tlh、msado15.tli,这两个文件类似于控件的包装类。

  3、在使用任何COM组件时,都必须首先初始化COM库。

    3.1使用组件前,初始化COM库  CoInitialize(NULL);

    3.2使用组件后,卸载COM库  CoUninitialize();

  4、ADO组件的使用

    使用C++类封装ADO组件的接口,好处是方便C++程序对ADO的使用。

    4.1 Connection接口(使用CAdoDatabase类封装)

      功能与ODBC类的CDatabase类似

      1-- Open()函数,连接数据库

        HRESULT Open (

_bstr_t ConnectionString,  //连接字符串

_bstr_t UserID,  //登录名称;在连接字符串中设置了该处即为""

_bstr_t Password,  //登录密码;在连接字符串中设置了该处即为""

long Options   //连接方式,直接写-1

        );

        由于不同的数据库“连接字符串”各不相同,所以通过新建*.udl文件自动生成连接字符串:

在桌面新建文本文档->重命名为1.udl->打开该文件->选择[提供程序]选项卡->选择对应的数据库驱动,点击“下一步”->输入相关信息后,测试连接,成功后确定即可;将1.udl重新以记事本方式打开,即可见连接字符串,如:

          Provider=Microsoft.Jet.OLEDB.4.0;

          Data Source=D:\ado.mdb;

          或

          Provider=Microsoft.Jet.OLEDB.4.0;

          Password=123;User ID=ZWQ;

          Data Source=D:\ado.mdb;

    4.2 Recordset接口(使用CAdoRecordset类封装)

      功能与ODBC类的CRecordset类似

      1-- Open()函数,执行sql语句、打开表、执行存储过程

        HRESULT Open (

  const _variant_t & Source,  //sql语句、表名、存储过程

const _variant_t & ActiveConnection,  //活动连接

enum CursorTypeEnum CursorType,  //游标类型

enum LockTypeEnum LockType,  //锁定类型

           long Options   //标识第一个参数,sql语句-adCmdText/表名-adCmdTable/存储过程-adCmdStoredProc

        );

        游标类型:

        enum CursorTypeEnum{

adOpenForwardOnly = 0,  //单向的静态游标

adOpenKeyset = 1,  //键集游标,动态游标

adOpenDynamic = 2,  //动态游标

adOpenStatic = 3  //双向的静态游标

        };

        如果记录集使用的是动态游标,记录集会随着用户对表的修改发生变化;如果使用的静态游标,从表中取出数据后不再改变。

        锁定类型(多用户对同一数据库进行操作时):

        enum LockTypeEnum{

adLockReadOnly = 1,  //只读记录集

adLockPessimistic = 2,  //悲观锁

adLockOptimistic = 3,  //乐观锁

adLockBatchOptimistic = 4  //批处理方式的乐观锁

        };

      2-- 获取字段的数量(Fields)  Fields->GetCount()

      3-- 获取字段标题  Fields->GetItem(nIndex)->GetName()

      4-- 获取字段的值  Fields->GetItem(nIndex)->Value

      5-- 记录集的指针操作  MoveNext/MovePrevious/MoveFirst/MoveLast/Move(long nNums)

        IsEOF -是否移动到了最末尾 / IsBOF -是否移动到了最开始

      6-- 方式一:通过记录集的方式增、删、改

        6.1添加记录

          1--从数据表中获取数据到记录集  OpenTable()

          2--在记录集中添加一条新记录  AddNew()

          3--设置该记录各个字段的值  SetFieldValue

          4--更新到数据库  Update()

          5--重新显示数据  ShowData()

        6.2删除记录

          1--从数据表中获取数据到记录集  OpenTable()

          2--将记录指针移动到要删除的记录  MoveLast()

          3--执行删除操作  Delete()

          4--更新到数据库  Update()

          5--重新显示数据  ShowData()

        6.3修改记录

          1--从数据表中获取数据到记录集  OpenTable()

          2--将记录指针移动到要修改的记录  MoveFirst()

          3--执行修改操作  SetFieldValue

          4--更新到数据库 Update()

          5--重新显示  ShowData()

      7--方式二:通过执行sql语句的方式增、删、改操作

        1、Connection接口Execute()函数

          返回一个记录集,无法通过参数设置记录集的游标类型和锁定类型,是一个只读的,游标类型是单向的静态游标,所以,常用它执行增、删、改操作

        2、Recordset接口Open()函数

          常用Open()函数执行查询操作,可结合记录集的增、删、改方式对数据表中的数据进行增、删、改

  5、事务处理

    Connection接口提供了事务处理的功能

      启动事务 BeginTrans()

      结束事务 EndTrans(FALSE)--事务结束时包含了执行事务CommitTrans和回滚事务RollbackTrans

  6、如何在数据表中保存视频、图片数据?

    通常在数据库中保存视频、图片所对应的文件的路径

时间: 2024-09-30 02:51:21

ODBC、ADO的相关文章

简单了解ADO.NET、ADO、OLE DB、ODBC

一.数据访问方式的历史 通用数据访问模型:      ODBC – (Open Database Connectivity)是一种底层的访问技术,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口). OLE DB – 随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(Component Object Model)的OLE DB应运而生了. 数据访问客户端:    DAO - (Data Access Objects)不

ODBC、OLEDB和ADO之间的关系

学习了.net视频之后,对里面涉及到的数据库连接部分中的一些概念表示很无语.网上很多相关资料,但除了网站不一样外,基本上内容都神一样的一致. 现在,我就通过结合看到的一些资料再加上自己的理解试图去解释一下,有不对的,还请大家指教! 看一张图: 看图中右半部分,我们先来了解一下ODBC这个概念. 1.ODBC: 要了解ODBC是什么,先了解一下数据库连接的相关知识.其实,在最开始连接数据库时,由于数据库种类繁多,各种数据库连接有不同的需求,这个时期,数据库连接主要依靠各种API函数来进行连接.而O

ODBC、OLE DB、 ADO的区别

一.ODBC ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂商和Third-Party的支持而逐渐成为标准的数据存取技术.ODBC以当时的业界标准规范X/OpenCall-LevelInterface(CLI)和ISO/IEC9075-3Call-LevelInterface(SQL/CLI)为涵盖的范围,因而支持了广阔的数据库.虽然ODBC在初期的版本中执行效

[转帖]ODBC、OLEDB、ADO、ADO.NET

一文详解ODBC.OLEDB.ADO.ADO.NET之间的关系 2019年01月16日 21:28:38 LoveMIss-Y 阅读数:66更多 所属专栏: 白话C#高级编程 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_27825451/article/details/86515141 相信看到这篇文章的人,心中肯定有这样的想法:ODBC.OLEDB.ADO.ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢

【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史

原文:ODBC, OLEDB, ADO, ADO.Net的演化简史 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.Net. 看看Wiki上的MDAC定义:“Microsoft Data Access Components(MDAC)是微软专门为数据访问功能而发展的应用程序开发接口,做为微软的统一化数据访问(Universal Data Access; UDA)解决方案的核心组成,最初的版本在1996年时发表,其组成组件有O

ODBC, OLEDB, ADO, ADO.NET

在SSIS中,选择Connction Manager时,有很多的类型.其中会发现如下4个连接类型ODBC, OLEDB, ADO, ADO.NET.这4个东东到底是什么,他们有什么关联,什么区别,如何选择? 本文就他们的演化来解释这4个东东- 演变历史: 史前 => ODBC => OLEDB => ADO => ADO.NET 史前 最初,不同厂商的关系型数据库有着不同的调用接口(API),如SQL Server的DBLib,Oracle的OCI.那时开发人员必须使用不同的API

.Net Core 系列:2、ADO.Net 基础

目录: 1.环境搭建 2.ADO.Net 基础 3.ASP.Net Core 基础 4.MD5.Sha256.AES 加密 5.实现登录注册功能 6.实现目录管理功能 7.实现文章发布.编辑.阅览和删除功能 8.实现文章回复功能 9.实现文章点赞功能 10.正式发布文章系统 1.前言 因为本系列是.NET Core 系列,本文中所有叙述的是基于.NET Core 1.1版本的数据访问层接口.为什么需要强调是.Net Core 1.1呢?由于在2017年Q3发布的.NET Core 2.0中通过官

【转】OLEDB和ODBC以及ADO最形象的解释

史前    那时候每个数据库供应商(其实也没几个)    都有自己的数据库操作API,    每个应用程序只能使用一个固定的数据库    想换数据库?没门!你要全部重新写后来    X/OPEN和ISO(好像还有IBM)说    这么乱,程序员怎么活啊    于是提出了CLI(Call-Level Interface)    每个数据库的CLI(驱动程序)基本上相同,    程序员总算好过点了,可是要换数据库,    你写的程序需要重新编译(或许还要安装)再后来    于是ODBC来了,它通过动

第七章、ADO.Net

1.ADO.Net简介 代码示例: using (MySqlConnection conn = new MySqlConnection("Server=localhost;Database=study1;uid=root;pwd=root;Charset=utf8")) using (MySqlCommand cmd = conn.CreateCommand()) { conn.Open();//一定要在执行前Open数据库连接 cmd.CommandText = "Inse