ODBC API开发教程
作者:闻怡洋 未得到作者允许请勿转载 http://wyy.vchelp.net/
目录
第 1 章 介绍... 2
第 2 章 ODBC API访问数据库... 2 2.1 ODBC简要介绍... 2 2.1.1 在没有ODBC以前... 2 2.1.2 ODBC介绍... 3 2.1.3 ODBC结构... 3 2.1.4 ODBC的一致性... 4
2.2 使用ODBC进行数据库开发基本知识介绍... 4 2.2.1 建立ODBC DSN.. 4
2.2.2 使用ODBC所需要的文件... 6 2.2.3 SQL语句执行方式介绍... 6 2.2.4 获取SQL语句执行的结果... 7 2.2.5 程序执行的基本流程图... 8 2.2.6 数据类型定义... 9 2.2.7 ODBC句柄... 11
2.3 为本章的例程创建DSN与数据库表... 11 2.4 ODBC的基本功能介绍... 11 2.4.1 所需要了解的ODBC API 11 2.5 ODBC的其他功能介绍... 18 2.5.1 ODBC连接句柄的参数设置... 18 2.5.2 ODBC语句句柄的参数设置... 19 2.5.3 ODBC中使用可以滚动的光标... 20 2.5.4 存储过程的执行与参数的绑定... 21 2.5.5 SQL的准备与执行... 28
2.5.6 通过列绑定获取字段数据... 30
2.5.7 ODBC中BLOB(Binary Large Object)字段数据的处理... 31 2.5.8 ODBC对事务的支持... 34 2.5.9 多线程... 34
2.5.10 SQL语句的异步执行... 34 第 3 章 结束语... 35
第 1 章 介绍
在文章的开头做一个习惯性的介绍。
本文从2002年11月开始写,基本上在2002年12月时完成,当时本来作为一本书的一个章节,后来由于某些原因没有完成该书。这段时间将本文内容进行了一些整理,放在网上希望能够给大家一些帮助。
本文的内容主要是关于ODBC 的功能,所有内容都与ODBC 3.X版本兼容。
本文简要介绍了ODBC的历史和发展,也介绍了ODBC的基本的常用功能。大致包括:
l 使用ODBC进行数据库连接 l 利用ODBC直接执行SQL语句 l ODBC光标类型介绍
l 利用滚动光标或非滚动光标进行结果集查询 l 存储过程的调用与参数绑定 l SQL语句的准备执行方式 l BLOB数据字段的查询和修改
本文的数据库利用了MS SQL Server,ODBC在使用时是与数据库无关的所以所有例程都可以运行在其他数据库上,例如Oracle。其实利用Access数据库来进行练习也是可以的,但是由于Access不能支持存储过程,所以我没有使用Access数据库。
由于例程代码没有找到,所以没有就没有办法提供,但是文中的代码都比较详细而且有具体的解释。
书中有很多错误和不足之处希望大家能够容忍和包含,也欢迎来信指出。
闻怡洋 2003年07月01日
http://www.vchelp.net
第 2 章 ODBC API访问数据库
2.1 ODBC简要介绍
2.1.1 在没有ODBC以前
请允许我将那时候成为第二黑暗时代,第一黑暗时代是没有数据库的时代。
ODBC的出现结束了数据库开发的无标准时代。在没有ODBC以前不同的数据库的开发所采用的标准是不统一的。一般来讲不同的数据库厂商都有自己的数据库开发包,这些开发包支持两种模式的数据库开发:预编译的嵌入模式(例如Oracle的ProC,SQL Server的ESQL)和API调用(例如Oracle的OCI)。
对于一个开发人员来讲使用预编译方式开发是极其痛苦的,我就有过这样的经历,所有的SQL语句要写在程序内部,并且遵守一定的规则,然后由数据库厂商的预编译工具处理后形成C代码,最后由C编译器进行编译。预编译的最大问题就在于无法动态的生成SQL语句,我想作为一个程序员是很难接受的。
接下来的是使用API进行开发,和预编译相比算是前进了一大步。数据库厂商提供了开发包,你通过各种API函数就可以连接数据库,执行查询、修改、删除,操纵光标,执行存储过程等。对于程序员来讲有了更多的自由,而且可以创建自己的开发包。但是这一切的开发只能针对同一种数据库。
Oracle的OCI是一个非常优秀的C语言开发包,在ODBC中就在很多地方参照了OCI的设计。
2.1.2 ODBC介绍
ODBC(Open Database Connectivity)是由微软公司提出的一个用于访问数据库的统一界面标准,随着客户机/服务器体系结构在各行业领域广泛应用,多种数据库之间的互连访问成为一个突出的问题,而ODBC成为目前一个强有力的解决方案。ODBC之所以能够操作众多的数据库,是由于当前绝大部分数据库全部或部分地遵从关系数据库概念,ODBC看待这些数据库时正是着眼了这些共同点。虽然支持众多的数据库,但这并不意味ODBC会变得复杂,ODBC是基于结构化查询语言(SQL),使用SQL可大大简化其应用程序设计接口(API),由于
ODBC思想上的先进性,而且没有同类标准或产品与之竞争,因而越来越受到众多厂家和用户的青睐。目前,ODBC已经成为客户机/服务器系统中的一个重要支持技术。
在1994年时ODBC有了第一个版本,这种名为Open Data Base Connection(开放式数据库互连)的技术很快通过了标准化并且得到各个数据库厂商的支持。ODBC在当时解决了两个问题,一个是在Windows平台上的数据库开发,另一个是建立一个统一的标准,只要数据厂商提供的开发包支持这个标准,那么开发人员通过ODBC开发的程序可以在不同的数据库之间自由转换。这对开发人员来说的确值得庆贺。
ODBC参照了X/OpenData Management: SQL Call-Level Interface和ISO/ICE1995 Call-Level Interface标准,在ODBC版本3.X中已经完全实现了这两个标准的所有要求。所以本书所有内容都基于ODBC 3.0以上版本。
最开始时支持ODBC的数据库只有SQL Server,ACCESS,FoxPro,这些都时微软的产品,他们能够支持ODBC一点也不奇怪,但是那时候Windows的图形界面已经成为了客户端软件最理想的载体,所以各大数据厂商也在不久后发布了针对ODBC的驱动程序。
在Windows 3.X和Windows 95的时候ODBC并不作为系统的组成部分出现,使用前必须另行安装。但到了Windows 98的时候,当你安装好操作系统后,ODBC不需要另行安装了,因为它已经成为了操作系统的一部分。这对很多拒绝ODBC的人来说又少了一个借口。 作为一个程序员,至少是我,我实在找不出什么理由不为ODBC欢呼。此外ODBC的结构很简单和清晰,学习和了解ODBC的机制和开发方法对学习ADO等其他的数据库访问技术会有所帮助。
2.1.3 ODBC结构
图2.1显示了ODBC的结构。
ODBC API开发教程



