网站大量收购独家精品文档,联系QQ:2885784924

c语言之odb编程指南.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?摘要本文在介绍了ODBC(开放性数据库连接,Open? DataBase? Co nnectivity)运行机制的基础上,着重讨论了VisualC++2.0下利用ODBC API及利用MFC进行ODBC编程的两种方法. ??? 关键词ODBC,SQL,数据源,文档/视图结构,DBMS ??? 一、ODBC的发展背景 ??? 在传统的数据库领域,数据库应用程序通常是指在特定的数据库 管理系统(DBMS)的支持下,用特定的内嵌式结构化查询语言(SQL)开发 的.这样的数据库应用程序存在如下的缺点:(1)它往往需要一个庞大 的数据库管理系统的支持,对用户的软、硬件要求高;(2)它通常只能 处理一种格式的数据库文件. ??? 与传统的数据库应用程序的实现方法相比,Microsoft的开放性数 据库连接(ODBC)标准则提供了一种新的途径:它建立了一组规范,并提 供了一组高层应用程序调用接口和一套基于动态链接库(DLL)的运行 支持环境.用这样一组接口规范开发的应用程序,使用标准的函数和结 构化查询语言(SQL)对数据库进行操作,不必关心数据源(DataSourc e)来自何种数据库管理系统DBMS,所有的数据库的底层操作都是由相 应的ODBC驱动程序(ODBCDriver)完成.只要有了相应的ODBC驱动程序, 应用程序处理的对象-数据源就可以非常广泛,既可以是本机的某种数 据库格式的文件,如FoxPro的*.dbf文件,也可以是远程数据库文件,如 MicrosoftSQLServer等. ??? 二、ODBC的运行机制 ??? ODBC的体系构架包括五个部分:ODBC管理器(ODBCAdministrator) 、应用程序(Application)、ODBC驱动程序管理器(ODBCDriver? Mana ger)、ODBC驱动程序(ODBCDriver)和数据源(Data? Source).图1表示 了ODBC各部分之间的关系. ??? ODBC管理器在整个ODBC运行机制中起配置环境、登录信息的作用 ,它被安装在Control? Pannel里(ODBCINST.CPL).通过该工具,可以用 来配置、增添和删除数据源,也可以用来删除、安装ODBC驱动程序.OD BC管理器把数据源和ODBC驱动程序的信息记录在ODBC.INI、ODBCINST .INI和ODBCISAM.INI中,或者登录在系统数据库中,ODBC的其他部件通 过读取这些信息,相互作用,应用程序就能够实现对已登录数据库的共 享. ??? 应用程序(Application)的主要任务是通过调用标准的ODBC函数, 提交SQL语句并返回结果,对结果进行处理. ??? ODBC驱动程序管理器的作用是根据应用程序的要求,调用不同的O DBC驱动程序. ??? ODBC驱动程序的作用是实现ODBC函数调用,对指定的数据源执行S QL语句,并把结果返回给应用程序.有时候,为了符合特定的数据库管 理系统的语法,ODBC驱动程序还会对应用程序的要求作适当修改.这里 ,ODBC驱动程序的作用与运行在Windows下的打印机驱动程序的作用非 常相似. ??? 数据源,由用户要访问的数据及与之相关的操作系统、数据库管 理系统和用于访问数据库管理系统所需的网络平台组成. ??? 对应用程序而言,ODBC驱动程序管理器和ODBC驱动程序就像一个 实现ODBC函数调用的整体单元,应用程序感觉不到它们之间的分工合 作关系.整个ODBC的结构是基于一种独特的动态链接库DLL而存在的, 它使得系统完全模块化了. ??? 三、利用ODBC? API的C语言ODBC编程 ??? 下面以一个典型ODBC数据库访问程序的伪代码为例,说明用ODBCA PI的C语言进行ODBC编程的一般步骤.该程序从用户接受SQL查询语句, 然后获取结果,集中各行各列的数据. ??? HENV? henv ??? HDBChdbc ??? HSTMThstmt ??? int? nCols ??? SQLALLocEnv(henv)/*环境申请,获得一个环境句柄*/ ??? SQLAllocConnect(henv,hdbc)/*连接申请,获得数据库连接句柄 */ ??? SQLDriverConnect(hdbc,…)/*与具体的ODBC驱动程序和数据源 联系*/ ??? SQLAllocStmt(hdbc,hstmt)/*语句申请,获得一个语句句柄*/ ??? Input? SQLStatement/*从用户接受SQL语句*/ ??? SQLExecDirect(hstmt,SQLStatement,…)/*执行SQL语句*/ ??? SQLNumResultCols(hstmt,nCols)/*获取结果集中列数*/

文档评论(0)

pao0969363mou8 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档