MFC中使用数据库注意事项

最近做毕业设计,MFC中要用到数据库,对于我这个菜鸟,数据库接触的不是很多,而在这个项目中我主要使用了ADO动态链接库,现在就把项目中遇到的问题在这里总结一下,希望老鸟勿喷,也希望大家有什么好的意见提出来。

1、首先介绍下什么是ADO?
微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。ADO是目前在Windows环境中比较流行的客户端数据库编程技术。ADO是建立在OLE DB底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。而且按微软公司的意图,OLE DB和ADO将逐步取代 ODBC和DAO。这里放一个图,我觉得这个图能很大程度上理清各种数据库调用之间的关系。


2、在VC++中使用ADO编程 

ADO中最重要的对象有三个:Connection、Command和Recordset,它们分别表示连接对象、命令对象和记录集对象,在vc中分别对应_ConnectionPtr,_CommandPtr,_RecordsetPtr,接下来简单介绍下这三个类的作用。

            _ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。使用 _ConnectionPtr接口返回一个记录集不是一个好的使用方法。对于要返回记录的操作通常用_RecordserPtr来实现。而用 _ConnectionPtr操作时要想得到记录条数得遍历所有 记录,而用_RecordserPtr时不需要。
       _CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,你可以利用全局 _ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接 串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回 很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr 接口执 行存储过程和SQL语句。
       _RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给 _RecordsetPtr的connection成员变量,让它自己创建数据连接。如果你要使用多个记录集, 最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用 _RecordsetPtr执行存储过程和SQL语句。

3、调用步骤如下:

  (1)在stdafx.h导入动态链接库

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")

这行代码声明“在工程中使用ADO但不使用ADO的名字空间,并且为了避免常熟冲突将常熟EOF改为adoEOF.

(2)在App::InitInstance()中初始化OLE/COM库

if(!AfxOleInit())  
  {
  AfxMessageBox("初始化OLE DLL失败");
  return FALSE;
  }

在DoModal()之前调用

(3)创建ADO Recordset,ADO Command,ADO Connection对象并初始化。

//创建

_RecordsetPtr m_pRecord;      //ADO Recordset对象
  _CommandPtr m_pCommand;       //ADO Command对象
  _ConnectionPtr m_pConnect;    //ADO Connection对象

//初始化

try
  {
  m_pConnect.CreateInstance("ADODB.Connection");  //创建ADO Connection对象
  m_pCommand.CreateInstance("ADODB.Command"); //创建ADO Command
  m_pRecord.CreateInstance("ADODB.Recordset"); //创建ADO Recordset
  m_pConnect->ConnectionString = (_bstr_t)m_ConnectStr.AllocSysString(); //设置ADO Connection对象的连接字符串
  m_pConnect->Open("","","",-1);  //打开数据库
  }
  catch(_com_error &err)
  {
  //显示错误信息
  MessageBox(NULL,"数据库初始化失败","提示",MB_ICONINFORMATION);
  }

今天先到这里,后期补上!!!


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值