欢迎来到天天文库
浏览记录
ID:33487981
大小:185.00 KB
页数:12页
时间:2019-02-26
《odbc api参考资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、使用ODBCAPI进行数据库编程ODBC(OpenDatabaseConnectivity,开放数据库连接),是由Microsoft公司基于X/OPENCLI提出的用于访问数据库的应用程序编程接口,主要完成应用程序和数据库系统之间的中间件功能。基于ODBC的应用程序通过ODBC提供的API与数据库进行交互,在避免了应用程序直接操作数据库系统的同时,极大的增强了应用程序的可移植性、扩展性和可维护性。ODBC定义了访问数据库的API一个规范,这些API独立于不同厂商的数据库产品。在开始使用ODBC编程之前,需要安装ODBC驱动程序,并在ODBC驱动管理器中注册。Windows操作系统自带了ODB
2、C驱动程序管理器,可以在“控制面板->管理工具->ODBC数据源管理器”找到。一、使用ODBC需要包含的头文件和库文件ODBC头文件有5个:sql.h,sqlext.h,sqltypes.h,sqlucode.handodbcinst.h。一般情况下用到sql.h和sqlext.h。#include"sql.h" //ThisisthethemainincludeforODBCCorefunctions.#include"sqlext.h" //ThisistheincludeforapplicationsusingtheMicrosoftSQLEx
3、tensions#include"sqltypes.h" //ThisfiledefinesthetypesusedinODBC#include"sqlucode.h" //ThisistheunicodeincludeforODBCCorefunctions#include"odbcinst.h" //ThisistheapplicationincludefilefortheSQLServerdriverspecificdefines.库文件:odbc32.lib二、ODBC应用的结构图2.1一个简单的ODBC应用的概念模型一个ODBC程序通常可以分为三个模块:初始化、
4、数据库操作和资源释放。初始化模块主要完成数据库句柄的创建,环境参数的设置及连接到数据库等操作;数据库操作部分是整个程序的主体,主要完成与业务逻辑相关的数据库对象及数据的增、删、改、查等操作;资源释放模块主要包括数据库连接及资源的释放等。1.初始化初始化模块主要进行分配和初始化系统资源,为稍后的数据库操作做准备。具体包括Environmenthandle和Connectionhandle的创建和初始化、连接到指定的数据源、全局及连接属性的设置等。图2.2所示为初始化部分的示意图,图中虚线表示的是可选项,即可以自定义全局或连接属性,也可以不进行设置,使用系统的默认值。图2.2初始化模块(1)分配
5、handle:使用SQLAllocHandle()来统一分配handle。(2)设置和查询全局属性:使用SQLSetEnvAttr()和SQLGetEnvAttr()来设置和查询全局属性。(3)设置和查询连接属性:使用SQLSetConnectAttr()和SQLGetConnectAttr()来设置和获得连接属性。(4) 连接到数据源:使用SQLConnect()或者SQLDriverConnect()连接到指定的数据源。SQLConnect和SQLDriverConnect都可以完成连接到数据库的功能,但是SQLDriverConnect能够在连接时通过指定连接字符串进行更加详细的设置。
6、2.数据库操作数据库操作模块包括是整个程序的主体,根据业务需求,完成对数据库对象的创建、修改、删除及数据的增、删、改、查等。一个基本的ODBC数据库操作由以下五步组成,如图2.3所示。图2.3数据库操作示意图(1) 分配Stmthandle:包括Stmthandle的创建,并根据需要对其属性进行设置,例如设置绑定参数类型,游标是否可滚动等。Stmthandle是执行数据库操作的句柄,所有涉及数据库数据的操作都由Stmthandle来实现,同时也可以针对需求对某些数据库操作进行特殊的属性设置,如游标是否可滚动,隔离级别的设置等。Stmthandle由Connectionhandle分配,一个C
7、onnectionhandle可以分配同时多个Stmthandle来进行不同的操作。(2) 执行数据库操作。其中数据库操作主要包括数据库对象(表、视图、存储过程、触发器等)的操作(创建、修改、删除)和数据的操作(增、删、改、查)两部分。执行数据库操作有两种方法:对于只执行一次的操作,使用直接执行的方法即可。使用SQLExecDirect()完成直接执行的操作。对于在程序中可能重复执行的操作,通常使用先准备后执
此文档下载收益归作者所有