您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

在C++中的ODBC API数据库编程

2024/6/6 3:24:49发布32次查看
在c++中的odbc api数据库编程 一、动态加载数据源 1 、通过修改注册表加载数据源: 用户数据源: hkey_current_user \ software \ odbc \ odbc.ini 系统数据源: hkey_local_machine \ software \ odbc \ odbc.ini 对于不同类型的数据源,注册表的修改
在c++中的odbc api数据库编程
一、动态加载数据源
1、通过修改注册表加载数据源:
·用户数据源:hkey_current_user\software\odbc\odbc.ini
·系统数据源:hkey_local_machine\software\odbc\odbc.ini
对于不同类型的数据源,注册表的修改也不同,但基本上要修改两个地方,一个是在odbc.ini子键下建立一个与数据源描述名同名的子键,并在该子键下建立与数据源配置相关的项;另一个是在\odbc.ini\odbc data sources子键下建立一个新项以便告诉驱动程序管理器odbc数据源的类型。
2、通过odbc api加载:windows系统子目录下的动态链接库odbcinst.dll提供了一个可以动态增加、修改和删除数据源的函数sqlconfigdatasource,由于vc的默认库文件中不包含此函数,因此使用前需将odbcinst.h文件包含在工程的头文件中,在工程的setting属性框link页的object/library module编辑框中增加odbc32.lib,同时保证系统目录system32下有文件odbccp32.dll。
3、文件数据源的连接:除了odbc管理器,还可以通过sqldriverconnect来添加文件数据源。
二、odbc  api编程
如果一个odbc api函数执行成功,则返回sql_success或sql_success_with_info,sql_success指示可通过诊断记录获取有关操作的详细信息,sql_success_with_info指示应用程序执行结果带有警告信息,可通过诊断记录获取详细信息。如果函数调用失败,返回码为sql_error。
一般,编写odbc程序主要有一下几个步骤:
1、分配环境句柄:声明一个sqlhenv的变量,调用函数sqlallochandle。
设置环境属性:完成环境分配后,用函数sqlsetenvattr设置环境属性,注册odbc版本号。
释放环境句柄:完成数据访问任务时,应调用sqlfreehandle释放前面分配的环境。
2、分配连接句柄:声明一个sqlhdbc类型的变量,调用sqlallochandle函数分配句柄。
设置连接属性:所有连接属性都可通过函数sqlsetconnectattr设置,调用函数sqlgetconnectattr可获取这些连接属性的当前设置值。
3、   连接数据源:对于不同的程序和用户接口,可以用不同的函数建立连接
sqlconnect:该函数只要提供数据源名称、用户id和口令,就可以进行连接了。
sqldriverconnect:该函数用一个连接字符串建立至数据源的连接,它可以让用户输入必要的连接信息,使用系统中还没定义的数据源。
sqlbrowseconnect:该函数支持以一种迭代的方式获取到数据源的连接,直到最后建立连接,它基于客户机/服务器体系结构,因此本地数据库不支持该函数。
4、   准备并执行sql语句
a、  分配语句句柄:语句句柄是通过调用sqlallochandle函数分配的。
函数sqlgetstmrrattr和sqlsetstmrrattr用来获取和设置一个语句句柄的选项,使用完,调用sqlfreehandle释放该句柄。
b、  执行sql语句
sqlexecdirect:该函数直接执行sql语句,香港服务器,对于只执行一次的sql语句来说,该函数是执行最快的方法。
sqlprepare和sqlexecute:对于需要多次执行的sql语句来说,香港服务器,可先调用sqlprepare准备sql语句的执行,用sqlexecute执行准备好的语句。
c、  使用参数:使用参数可以使一条sql语句多次执行,得到不同的结果。
函数sqlbindparameter负责为参数定义变量,将一段sql语句中的一个参数标识符(?)捆绑在一起,实现参数值的传递。
5、   获取记录集
a、   绑定列:首先必须分配与记录集中字段相对应的变量,然后通过函数sqlbindcol将记录字段同程序变量绑定在一起,对于长记录字段,可以通过调用函数sqlgetdata直接取回数据。
绑定字段可以根据自己的需要全部绑定,也可以绑定其中的某几个字段。
通过调用函数sqlbindcol将变量地址值赋为null,可以结束对一个记录字段的绑定,通过调用函数sqlfreestmt,将其中选项设为sql_unbind,或者直接释放句柄,都会结束所有记录字段的绑定。
b、sqlfetch:该函数用于将记录集的下一行变成当前行,并把所有捆绑过的数据字段的数据拷贝到相应的缓冲区。
c、 光标:应用程序获取数据是通过光标(cursor)来实现的,在odbc中,主要有3种类型的光标:单向光标、可滚动光标和块光标。
有些应用程序不支持可滚动光标和块光标,odbc sdk提供了一个光标库(odbccr32.dll),在应用程序中可通过设置连接属性(sql_sttr_odbc_cursor)激活光标库。
6、  记录的添加、删除和更新:数据源数据更新可通过3种方式:通过sqlexecdirect函数使用相应的sql语句;调用sqlsetpos函数实现记录集定义更新;调用sqlbulkoperations函数实现数据更新。
第一种方式适用于任何odbc数据源,后两种方式有的数据源不支持,可调用sqlgetinfo确定数据源。
sqlbulkoperations:该函数操作基于当前行集,调用前,须先调用sqlfetch或sqlfetchscroll获取。
函数调用后,块光标的位置变为未定义状况,因此,应该先调用函数sqlfetchscroll设定光标位置。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product