windows sdk编程系列文章26 ---- 数据库访问.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:21 大小:105KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

windows sdk编程系列文章26 ---- 数据库访问.doc

windowssdk编程系列文章26----数据库访问.doc

预览

免费试读已结束,剩余 11 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

windowssdk编程系列文章----数据库访问之一2008-07-2314:38理论:ODBC是微软公司为支持各种不同类型的数据库提供的一套编程接口,通过这组api,用户无需考虑采用的数据库类型,无需改动代码即可实现各种类型数据库之间的相互移植。在使用ODBC的时候,你需要了解以下四个组成部分:1)应用程序2)odbc管理器3)odbc驱动程序4)数据源其中:odbc管理器是这个四个环节中的核心,用户只需要告诉它要干什么,它就会把用户的意图转达给它下面的odbc驱动程序,由odbc驱动程序完成指定的任务。执行完后,还是通过odbc管理器将信息反馈给应用程序。odbc管理器是由微软提供的,打开控制面板,在管理工具中,会看到数据源(ODBC).odbc编程一般遵循以下四个步骤:1)连接到数据源2)创建和执行一个或者多个SQL语句3)必要的话检查返回的记录集4)断开同数据源的连接。要进行ODBC编程需要包含头文件#include"sqlext.h"。一、下面介绍下连接数据源的实现步骤:(1)分配一个环境句柄。在每一个odbc会话之前,用户都必须执行这一步。一旦用户得到了这个句柄,用户就可以根据自己的需要来修改环境的属性了。(2)制定程序采用的odbc版本。用户可以选择2.x或者3.x版本的odbc.由于这两个版本在许多地方存在差异,因此这一步是必须的。通过这一步,odbc管理器才能够知道究竟采用哪一种语法对应用程序的命令进行解释,实现和应用程序之间的通讯。(3)分配一个连接句柄,这一步可以视为创建一个空的连接,这时用户不需要指定采用何种odbc驱动驱动程序,也不需要制定连接哪一个数据库。这些信息可以在后面的步骤中填充。(4)建立连接。用户可以调用odbc函数建立连接。用到的函数:1。分配句柄函数在3.x之前的odbc版本中,用户需要分开调用几个函数来分配环境、连接和语句句柄(SQLAllocEnv,SQLAllocConnect,SQLAllocStmt)。在3.x环境下,所有这些函数都被SQLAllocHandle所取代。SQLRETURNSQLAllocHandle(SQLSMALLINTHandleType,SQLHANDLEInputHandle,SQLHANDLE*OutputHandlePtr);HandleType[Input]ThetypeofhandletobeallocatedbySQLAllocHandle.Mustbeoneofthefollowingvalues:SQL_HANDLE_ENV:环境句柄SQL_HANDLE_DBC:连接句柄SQL_HANDLE_DESC:描述句柄SQL_HANDLE_STMT:语句句柄InputHandle[Input]Theinputhandleinwhosecontextthenewhandleistobeallocated.IfHandleTypeisSQL_HANDLE_ENV,thisisSQL_NULL_HANDLE.IfHandleTypeisSQL_HANDLE_DBC,thismustbeanenvironmenthandle,andifitisSQL_HANDLE_STMTorSQL_HANDLE_DESC,itmustbeaconnectionhandle.OutputHandlePtr[Output]Pointertoabufferinwhichtoreturnthehandletothenewlyallocateddatastructure.2。设置odbc版本函数。SQLRETURNSQLSetEnvAttr(SQLHENVEnvironmentHandle,SQLINTEGERAttribute,SQLPOINTERValuePtr,SQLINTEGERStringLength);EnvironmentHandle[Input]Environmenthandle.Attribute[Input]Attributetoset,listedin"Comments."ValuePtr[Input]PointertothevaluetobeassociatedwithAttribute.DependingonthevalueofAttribute,ValuePtrwillbea32-bitintegervalueorpointtoanull-terminatedcharacterstring.StringLength[Input]IfValuePtrpointstoacharacterstringorabinarybuffer,thi