首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
数据库
> 详细
ODBC连接数据库总结
时间:
2015-02-11 18:36:57
阅读:
215
评论:
0
收藏:
0
[点我收藏+]
标签:
注:本文内容主要摘自《数据库教程》电子工业出版社,施伯乐等编著。sinble总结
句柄是应用程序和数据源连接的工具。根据应用程序的请求,驱动程序管理器就各驱动程序为存储有关ODBC环境、每个连接和每个SQL语句的信息分配一块存储空间,而把代表这些存储空间的句柄返回给应用程序,应用程序在调用ODBC函数时就要用到这些句柄。
ODBC使用三个句柄:环境句柄,连接句柄,语句句柄。
其中,一个环境句柄可与多个连接句柄相连,一个连接句柄可与多个语句句柄相连。(我的话:利用已经分配好的环境句柄可以创建与其相连的连接句柄,利用已经分配好的连接句柄可以创建与其相连的语句句柄。)
环境句柄定义一个数据库环境,连接句柄定义一个数据库连接,语句句柄定义一条SQL语句。
对于句柄,有两个ODBC函数:分配函数和释放函数。
执行分配函数的时候,首先分配内存,然后定义所需的数据结构,并对制定数据结构的句柄赋值。分配了句柄后,应用系统就可以将句柄传递给使用的接口函数,指出该函数所作用的环境、连接或句柄。
执行释放函数时,将释放各种句柄和每一个句柄所分配的内存。
环境句柄:HENV类型(助记:handle environment)
分配函数:SQLAllocEnv(phenv);//返回SQL_SUCCESS表示成功,SQL_ERROR表示失败;下同
释放函数:SQLFreeEnv(henv);
连接句柄:HDBC类型(助记:handle database connection)
分配函数:SQLAllocConnect(henv, phdbc);//用已经分配好的环境句柄,分配连接句柄
释放函数:SQLFreeConnect(hdbc);
语句句柄:HSTMT类型(助记:handle ???)
分配函数:SQLAllocStmt(hdbc, phstmt);//用已经分配好的连接句柄,分配语句句柄
释放函数:SQLFreeStmt(hstmt, fOption);
//fOption有四个取值,用来指定释放这个句柄的哪些资源
SQL_CLOSE:用于撤销所有未完成的操作结果,并关闭任何与句柄有关的光标。
SQL_DROP:用于释放所有与该句柄相关的资源,如果执行成功,则该句柄不再有效。
SQL_UNBIND:用于释放所有联编的列。
SQL_RESET_PARAMS:用于释放所有联编的参数。
上述三种句柄的分配函数和释放函数,在sql.h头文件中声明。需要用到时,必须include该头文件。
ODBC应用程序的基本流程分三个部分:初始化——>SQL处理——>终止。
其中初始化的顺序:
1.分配环境句柄:SQLAllocEnv函数
2.分配连接句柄:SQLAllocConnect函数
3.与服务器连接:SQLConnect函数
4.分配语句句柄:SQLAllocStmt函数
SQL处理中涉及的函数有:
1.SQLExecDirect函数:直接执行函数
2.SQLPrepare函数:语句预备函数
3.SQLExecute函数:语句执行函数
终止的顺序是:
1.与服务器断开:SQLDisconnect函数
2.释放语句句柄:SQLFreeStmt函数
3.释放连接句柄:SQLFreeConnect函数
4.释放环境句柄:SQLFreeEnv函数
其中,连接数据库函数SQLConnect说明如下:
SQLConnect(hdbc, szDSN, cbDSN, szUID, cbUID, szAuthStr, cbAuthStr);
hdbc是一个已经分配的连接分配;
szDSN和cbDSN是系统要连接的数据源名称及其长度;
szUID和cbUID表示用户标识符及其长度;
szAuthStr和cbAuthStr是权限字符串及其长度
函数:SQLDisconnect(hdbc);
SQL语句执行相关函数说明:
直接执行函数:SQLExecuDirect(hstmt, szSqlStr, cbSqlStr);
hstmt是一个有效的语句句柄
szSqlStr和cbSqlStr表示要执行的SQL语句及其长度
有准备执行SQL语句函数:先执行SQLPrepare函数为一连串的SQL语句做好准备,然后调用SQLExecute函数执行。
SQLPrepare(hstmt, szSqlStr, cbSqlStr);//参数意义与SQLExecuDirect相同
SQLExecute(hstmt);//参数意义与SQLExecuDirect同名参数相同
查询返回的是一个行集合,由光标控制。
查询结果获取:SQLFetch移动光标,SQLGetData读取光标指向行中的一列值。
SQLFetch(hstmt);//把光标移到下一行
SQLGetData(hstmt, icol, fCType, rgbValue, cbValueMax, pcbValue);
hstmt为有效的语句句柄
icol和fCType分别是结果数据的列号和类型
rgbValue和cbValueMax分别是数据存储区的指针和最大长度
pcbValue是本次调用前rgbValue中可以返回的字节总数
ODBC连接数据库总结
标签:
原文地址:http://blog.csdn.net/ghevinn/article/details/43736253
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
数据库进阶
2021-07-29
在 Oracle 数据库中执行 SQL 语句遇到特殊字符的转义方式
2021-07-28
Windows Logstash同步 Sqlserver 到Elasticsearch
2021-07-26
mysql数据库(11):恢复数据
2021-07-26
mysql数据库(9):常用查询的例子
2021-07-26
SQLAlchemy 多对多
2021-07-26
ClickHouse的JDBC连接
2021-07-26
Apache HBase 1.7.1 发布,分布式数据库
2021-07-26
数据库常用架构和同步工作原理
2021-07-26
MySQL数据库设计规范(仅供参考)
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!