ODBC编程培训教程ODBC编程培训教程21概述......................................................................................................................32ODBCAPI访问数据库.............................................................................................32.1ODBC简要介绍...........................................................................................32.2ODBC结构.................................................................................................32.3ODBC进行数据库开发基础知识简介.............................................................42.3.1建立odbcdsn.......................................................................................52.3.2使用ODBC所需要的文件.......................................................................72.3.3SQL语句的执行方式.............................................................................72.3.4获取SQL语句的执行结果......................................................................72.3.5程序执行的基本流程.............................................................................82.3.6数据类型定义.......................................................................................92.3.7ODBC句柄.........................................................................................132.4为本章的例程创建DSN与数据库表............................................................132.5ODBC的基本功能介绍...............................................................................132.5.1所需要了解的ODBCAPI......................................................................132.6ODBC的其他功能介绍...............................................................................192.6.1ODBC连接句柄的参数设置..................................................................192.6.2ODBC语句句柄的参数设置..................................................................202.6.3ODBC中使用可以滚动的光标...............................................................202.6.4ODBC的参数邦定..............................................................................222.6.5SQL的准备和执行...............................................................................242.6.6BLOB字段的更新和查询......................................................................262.6.7ODBC对事务的支持............................................................................283结束语.................................................................................................................29ODBC编程培训教程31概述本文主要介绍ODBC的功能,所有内容都与ODBC3.X版本兼容。大致包括:使用ODBC进行数据库连接利用ODBC直接执行SQL语句ODBC光标类型介绍利用滚动光标或非滚动光标进行结果集查询SQL语句的准备执行方式BLOB数据字段的查询和修改ODBC对事务的支持本文的数据库利用了GBase,ODBC在使用时是与数据库无关的所以所有例程都可以运行在其他数据库上,例如Oracle。只是有些sql语句的语法需要修改。2ODBCAPI访问数据库2.1ODBC简要介绍ODBC(OpenDatabaseConnectivity)是由微软公司提出的一个用于访问数据库的统一界面标准,随着客户机/服务器体系结构在各行业领域广泛应用,多种数据库之间的互连访问成为一个突出的问题,而ODBC成为目前一个强有力的解决方案。ODBC之所以能够操作众多的数据库,是由于当前绝大部分数据库全部或部分地遵从关系数据库概念,ODBC看待这些数据库时正是着眼了这些共同点。虽然支持众多的数据库,但这并不意味ODBC会变得复杂,ODBC是基于结构化查询语言(SQL),使用SQL可大大简化其应用程序设计接口(API),由于ODBC思想上的先进性,而且没有同类标准或产品与之竞争,因而越来越受到众多厂家和用户的青睐。目前,ODBC已经成为客户机/服务器系统中的一个重要支持技术。2.2ODBC结构图2.1显示了ODBC的结构。ODBC编程培训教程4图2.1应用程序(Application)应用程序本身不直接与数据库打交道,主要负责处理并调用ODBC函数,发送对数据库的SQL请求及取得结果。驱动程序管理器(DriverManager)驱动程序管理器是一个带有输入程序的动态链接库(DLL),主要目的是加载驱动程序,处理ODBC调用的初始化调用,提供ODBC调用的参数有效性和序列有效性。驱动程序(Driver)驱动程序是一个完成ODBC函数调用并与数据库相互影响的DLL,这些驱动程序可以处理对于特定的数据的数据库访问请求。对于应用驱动程序管理器送来的命令,驱动程序再进行解释形成自己的数据库所能理解的命令。驱动程序将处理所有的数据库访问请求,对于应用程序来讲不需要关注所使用的是本地数据库还上网络数据库。2.3ODBC进行数据库开发基础知识简介ODBC编程培训教程52.3.1建立odbcdsnDSN(DataSourceName)是用于指定ODBC与相关的驱动程序相对应的一个入口,所有DSN的信息由系统进行管理,一般来讲当应用程序要使用ODBC访问数据库时,就需要指定一个DSN以便于连接到一个指定的ODBC驱动程序。在控制面板中打开ODBC管理器,回看到如图2.2的界面。【开始】-【设置】-【控制面板】-【管理工具】-打开【数据源(ODBC)】DSN共分为三类:用户DSN:对当前登录用户可见,只能够用于当前计算机。系统DSN:对当前系统上所有用户可见,包括NT中的服务。文件DSN:DSN信息存放在文件中,对能够访问到该文件的用户可见。对于文件DSN来讲这些信息存放在文件中,对于用户DSN和系统DSN来讲这些信息存放在注册表内。进入【系统DSN】页显示如下:图2.2单击上图中的【添加】按钮后显示如下:ODBC编程培训教程6图2.3.1从上图驱动列表中选择相应数据库产品的ODBC驱动,单击【完成】后显示如下(选择GBaseODBC3.51Driver):图2.3.2ODBC编程培训教程7依次填写正确的数据源信息,上图中的数据源名项用户可以自定,描述项内容可以忽略,服务器项是服务器端IP或主机名称,用户和密码为在数据库中已创建的用户名和密码,数据库项为服务器端的数据库名称一正确填写完上图中的所有项,。点击[测试],可以测试填写的信息是否正确,单击[确定]关闭此窗体,完成该数据库dsn项的配置。2.3.2使用ODBC所需要的文件你需要下面的文件:sql.h:包含有基本的ODBCAPI的定义。sqlext.h:包含有扩展的ODBC的定义。odbc32.lib:库文件。这些文件在VC6,VC7都已经随开发工具提供了,不需要另外安装。此外所有的ODBC函数都以SQL开始,例如SQLExecute,SQLAllocHandle。2.3.3SQL语句的执行方式在ODBC中SQL语句的执行方式分为两种,直接执行和准备执行。直接执行是指由程序直接提供SQL语句,例如:Select*fromtest_table并调用SQLExecDirect执行,准备执行是指先提供一个SQL语句并调用SQLPrepare,然后当语句准备好后调用SQLExecute执行前面准备好的语句。准备执行多用于数据插入和数据删除,在进行准备时将由ODBC驱动程序对语句进行分析,在实际执行时可以避免进行SQL语句分析所花费的时间,所以在进行大批量数据操作时速度会比直接执行有明显改善。在后面的章节中我会详细介绍准备执行与行列绑定与参数替换的用法。2.3.4获取SQL语句的执行结果对于SQL查询语句,ODBC会返回一个光标,与光标对应的是一个结果集合(可以理解为一个表格)。开发人员利用光标来浏览所有的结果,你可以利用ODBCAPI函数移动光标,并且获取当前光标指向的行的列字段的数值。此外还可以通过光标来对光标当前所指向的数据进行修改,而修改会直接反映到数据库中。对于数据更新语句,如插入,删除和修改,在执行后可以得到当前操作所影响的数据的行数。ODBC编程培训教程82.3.5程序执行的基本流程图2.4ODBC编程培训教程9上图是一个基本的使用ODBCAPI的一个流程,你现在并不理解上面所有的函数的作用,这没有关系。但希望能够通过这幅图给你一个最初的映象,那就是使用ODBCAPI开发并不复杂。2.3.6数据类型定义在使用ODBC开发时一个重要的问题就是数据转换的问题,在ODBC中存在下面的几类数据:A.数据库中SQL语言表达数据的类型B.ODBC中表达数据的类型C.C语言中表达数据的类型在程序运行过程中数据需要经历两次转换:C语言的数据或结构类型与ODBC的数据类型的转换,ODBC与SQL间数据类型的转换。所以ODBC所定义的数据类型起到了中间桥梁的作用,在ODBC的驱动程序调用自己的DBMS数据库访问接口时就需要对数据类型进行转换。我们所需要关注的是C语言的数据类型和ODBC数据类型间的转换关系。ODBC数据类型名称SQL语言数据类型名称SQL