VC++访问数据库的方法研究

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:A406800
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:用VC 开发一个管理系统,要使用数据库对所需的数据进行存储与管理。该文介绍了Visual C 访问开发数据库的几种技术概况及其访问的方法:ODBC,DAO,OLE/DB和ADO,并对各种技术的使用范围、访问效率、工作稳定性等进行了比较,并给出了基本使用方法。
  关键词:ODBC;DAO;OLE/DB;ADO
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2009)05-1051-02
  VC to Access the Database of the Method
  ZHAO Mei-li1,TANG Jing2
  (1.Naval Academy Computer Department of Bengbu,Bengbu 233000,China;2.Fengyang Normal school,Fengyang 233100,China)
  Abstract: Develops a management system management system with VC must use the database to carry on the memory and the management the data which needs. This paper introduces the Visual C to access the database of profiles and their visit to several technical approaches: ODBC, DAO, OLE/DB and ADO,and the use of various technologies, access efficiency, job stability, etc. were compared, and gives the basic use.
  Key words:ODBC; DAO; OLE/DB; ADO
  
  1 引言
  
  随着Visual C 软件开发工具的广泛推广记载数据库方面的应用日趋广泛和深入,越来越多的软件开发人员和爱好者希望理解并掌握应用Visual C 管理开发数据库的技术和方法。VC 提供了几种接口(ODBC、DAO、OLE/DB、ADO)来支持数据库编程,利用这些接口可以在程序中直接操作各种各样的数据库,如(SQL Server、Microsoft Access、Microsoft FoxPro等等。
  
  2 ODBC
  
  ODBC(Open Database Connection 开放数据库互连)是一种使用SQL的数据库应用程序设计接口。它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口),为ODBC编程提供了一个面向对象的方法,这使得利用MFC来创建ODBC的应用程序非常方便。在使用ODBC API时,用户须引入的头文件“sql.h”,”sqlext.h”,”sqhypes.h”。MFC对ODBC的封装主要是开发了Cdatabase类和CRecordSet类[1]。
  Cdatabase类:该类可以实现对数据源的操作。通过构造Cdatabase类对象,调用它的Open或者OpenEx成员函数建立数据源连接。CRecordSet类:记录集类提供从数据源中提取的结果记录集并对其进行操作。它通过SQL语句返回,可以对表和视图进行查询或存储。要注意的是在应用程序中,一般不直接使用CRecordSet类而是使用其派生类,因为当使用MFC Class Wizard 产生一个CRecordSet类的派生类时MFC Class Wizard会自动添加相应数据库表中字段的成员变量并自动重载CRecordSet类的成员函数DoFieldExchange()。通过使用RFX函数来完成数据库字段与记录集字段数据成员变量的数据交换。在程序中使用MFC ODBC,除登录数据源之外,还需要在stdafx.h中包含afxdb.h。
  
  3 DAO
  
  ODBC的优点是它的使用比较简单,只要登录Windows控制面板中的数据源,就可以使ODBC连接到相应的数据库。但是使用ODBC访问数据库速度较慢,同时ODBC德尔使用需要很多相应的部件支持。DAO克服了ODBC的一些缺陷,由于它实际上使通过Microsoft Jet数据库引擎来访问数据库,所以DAO方法非常适合访问Jet型数据库(.mdb),同时使用DAO方法不需要登录数据源,只要指明数据库的路径即可。
  VC 的ODBC和DAO方法在使用形式上比较相似, ODBC访问记录集的基类是CRecordSet,DAO则为CdaoRecordSet,差别就是加上“DAO”,通过定义这些类的对象并调用相应的成员函数就可以实现Access数据库和表的动态创建。ODBC存取数据库时使用RFX_LongBinary。使用AppWizard的过程基本上与使用ODBC时相似,只是在选择数据源时要选择已建立好的DAO数据源,在后从系统中选出源数据库和表,令其自动生成这部分的代码。在应用程序中使用MFC DAO可以通过以下步骤来实现:
  首先应确保在stdafx.h头文件中包含了afxdao.h头文件:
  #include“afxdao.h”
  接着创建自己的CdaoRecordSet类(设为MydaoRecordSet),并使它与你所需要的数据库的表相连。同时在文档类的OnOpenDocument()函数中加入
  m_pdb=newCDaodatabase
  m_pdb->open();
  m_pset= newMydaoRecordSet(m_pdb);
  m_pset->open();
  最后创建自己的对话框,选择ClassWizard的ClassInfo页。在ForeignClass项填入先前所创建的MydaoRecordSet,在ForeignVariable项填入m_pset,并对各个edit栏用变量映射。
  
  4 OLE/DB
  
  DAO也存在较大的缺点:主要是MFC DAO与Jet数据库引擎之间的版本。由于Visual C .NET环境和向导不再支持DAO(虽然仍包括DAO类),用户必须手工编写过去由向导执行的任务,Microsoft建议新项目采用OLE/DB模板或ODBC。OLE DB是基于COM借口的访问数据库的新技术[2],所以它继承了COM接口所有特性,具有较好的稳定性,由于接口的标准性,使得程序可以被应用到任何提供了数据程序的数据源,因此使用OLE DB开发的程序具有比较好的移植性。另外OLE DB通过将数据库的功能分为客户和服务器两个方面,提高了数据库访问效率。前面提到的传统数据库访问技术(ODBC、DAO)都只能访问关系型数据库,而OLE DB可以访问任何形式的文件系统,包括传统的关系型数据库和非关系型数据源及用户自定义的文件格式。但是在基于COM技术的数据库访问中通常使用ADO技术而不是OLE/DB。
  5 ADO
  ADO对象模型包括了7个对象:1)数据连接(Connection)对象建立一个数据交换环境,应用程序通过Connection访问数据;2)命令(Command)对象通过已建立的Connection发布命令完成操作数据库功能;3)记录集(RecordSet)对象存储查询命令返回的结果;4)错(Error)对象时记录应用ADO过程中出现错误的信息;5)属性(Property)对象代表数据提供者的具体属性;6)字段(Field)对象代表一个记录集的一个域;7)参数(Parameter)对象代表SQL存储过程或有参数查询中的参数。其中Connection、Command和RecordSet三个对象是主体对象,它们可以被独立创建和释放。Connection对象是用来建立和维护与数据源的连接,对数据创建和执行对数据库的操作命令,可以使用该对象执行SQL语句或调用存储过程;Command对象执行后将返回一个RecordSet对象。RecordSet对象包含执行数据库操作后返回的一个记录集。通过该对象可以浏览和更新数据库中保存的记录[3]。
  4.1 ADO对象与数据源的连接
  ADO是基于COM技术的,因此在使用ADO对象之前必须初始化COM环境,在VC工程应用类Initinstance的成员函数中添加如下初始化COM环境的代码:
  ::Coinitialize(NULL);
  1) 在MFC中没有可与ADO一起使用的类,因此若要在Visual C 程序中使用ADO对象,首先需要导入ADO动态链接库,在创建的VC工程的stadafx.h头文件中添加如下代码[4]:
  #import“C:\Program Files\Common Files\System\ado\msadol5.DLL\no_namespace”
  Rename(“EOF”,“EndOfFile”);
  其中no_namespace属性表示编译器不继承本身的命名空间,rename(“EOF”,”EndOfFile)表示将所有“EOF”替换为“EndOfFile”。为了方便使用ADO的各个类,应该在程序开头调用#import指令,在ADO的类库中包含了3个智能指针ConnectionPtr、CommandPtr和RecordSetPtr,其中ConnectionPtr指针用来管理连接一个数据源提供者所要求的信息,它提供了很多方法如Open和Close可以打开和关闭一个到数据库提供者的活动连接(Live Connection),还可以通过Excute方法在数据源上执行命令,而RecordSetPtr封装了数据源提供者返回的记录,它可以用于浏览返回的结果,也可以用于插入、删除或修改以有记录。为了代码的安全性,必须在函数调用的地方添加“try…catch…”程序块:
  Try
  {
  m_pRs=m_pConn->Excute(a_pStoredProcString,NULL,adCmdStored Proc);
  Return m_pRs;
  }
  Catch(_corn_error
其他文献
摘要:伴随着我国计算机技术的不断改革与发展,世界各个行业与单位都开始在工作中进一步使用计算机技术,使得计算机技术得到了前所未有的发展与进步。但是虽说计算机技术在各大领域中都得到了飞速发展,但其本身的网络安全防护技术仍有很多问题,亟待人们去解决。该文主要对计算机网络安全保护技术进行了分析与探讨,为以后计算机网络安全防护提供有效防护措施以及参考依据。  关键词:计算机;网络安全;防护技术  中图分类号
摘要:本体合理有效的存储是保证本体共享利用的前提,现有的关系数据库本体存储模式在存储本体后会出现查询推理效率低、维护困难等问题。文中在分析现有模式的基础上,针对本体类和属性的特点,给出了本体存储模式的设计原则,并基于该原则提出了一种新的本体存储模式。该模式针对本体描述语言的特点,将本体查询常用的信息存放在不同的表中。整个模式易于理解,结构稳定,并且减少了本体查询时进行表连接的代价,提高了查询效率。
习作能力是小学生语文素养的综合体现。教材的编写应遵循小学生习作素养形成规律,着眼培养小学生习作的兴趣与习惯,着力提高小学生习作能力,实现习作育人的目标。为帮助教师准确把握统编教材编写特点,精准施策,笔者就统编教材与苏教版教材的习作在编写思想、体例、内容、同标、要求等方面进行了仔细比对,并提出初步的教学建议。  一、两版教材习作编写的共同理念  I.素养立意,回归本义  统编教材和苏教版教材分别安排
摘要:IPv4地址空间的耗尽使得IPv4在获得巨大成功的同时也面临困境。因此下一代互联网协议IPv6的实施势在必行。IPv4因其出色的技术特性在互联网领域获得了巨大的成功,现在的互联网络是基于IPv4的,不可能将它们在短时间内都过渡到基于IPv6的网络。因此,在相当长的一段时期内,IPv6网络将和IPv4网络共存。如何实现IPv4向IPv6平滑过渡是目前面临的重要问题。  关键词:IPv4;IPv
歌词,在艺术性上,包含诗歌和音乐两种基本属性。近些年来,民谣与古风的兴起与流行,让大众与学界都看到了歌词里的诗性,以及它对于情绪的影响力,对文化的传播力。一些歌词作品已经进入诗学家的研究领域,比如陈思和先生就将摇滚歌手崔健的《一無所有》《新长征路上的摇滚》《一块红布》等写进《当代文学史教程》,陈洪将罗大佑的《现象七十二变》编入“十五”国家级规划教材《大学语文》中的“诗歌篇”,李怡主编的《中国现代诗
摘要:Ipv4有着不可克服的问题,必须用新的协议来替代。通常协议的过渡是很不容易的,从IPv4 向IPv6 的过渡也是如此。如何使得已支持IPv4 的设备和应用程序向IPv6 过渡, 是一个急需解决的问题。本文将详细介绍由IPv4 向IPV6 的几种过渡策略。并阐述了ipv6在我国发展的几点思考。  关键词:IPv4和IPv6;IPv6过渡;IPv6在我国发展的思考  中图分类号:TP393文献标
摘要:诸如《孔雀东南飞》一样的文质兼美的长篇文言文,因着文言与课时的限制,教学常常处于困境,串讲文言、鉴赏特色,苦无妙法兼顾二者。笔者在执教过程中,将“开心辞典”引入古文教学,用“小组学习”激活文言课堂,解放了老师,激活了学生。  关键词:《孔雀东南飞》 文言文教学 开心辞典 小组学习  《孔雀东南飞》是我国古代最长的一首叙事诗,是人教版必修二第二单元的一篇文章。这篇文章共有22个自然段,共178
摘要:文章简要介绍Access程序设计课程特点和重要性,对该课程的理论教学、实验教学和考试等过程中的教学方法进行了探讨,并讨论了如何加强学生的动手实践能力。   关键词:Access程序设计;教学方法;范例教学法  中图分类号:G642文献标识码:A文章编号:1009-3044(2009)22-pppp-0c    Access采用可视化编程技术、面向对象的事件驱动编程机制[1,3],既是一个面向
摘要:本文叙述了P2P网络的概念、发展历史以及它与传统网络模式的区别,探讨和分析了JXTA技术,阐述了基于JXTA技术对分布式课程辅助教学应用系统JBCAT的研究、设计与实现。  关键词:Peer-to-Peer;混合模式P2P;JXTA技术;计算机辅助教学;网络协作化  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)12-20000-00    The Resea
摘要:网络的安全性日益重要,防火墙技术也越来越受到人们的关注。本文详细介绍了防火墙的原理,讨论了基于iptables/netfilter框架的Linux操作系统防火墙的实现,并结合具体情况说明了iptables命令的使用方法。  关键词:防火墙;linux;iptables;netfilter  中图法分类号:TP309文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c