在程序中用到的ODBC API 函数
来源:互联网 发布:淘客微信公众号源码 编辑:程序博客网 时间:2024/05/29 18:03
本文转自
http://blog.sina.com.cn/s/blog_4db3fe5501008o0k.html
2)在程序中用到的ODBC API 函数
1.SQLBindParameter:其作用为当我们要向例如存储过程传递参数时,我们可利用其绑定我们要传递的参数。
SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_CHAR,SQL_VARCHAR,10,0,&name1,0,&namelen);
SQLHSTMT
SQL的语句句柄
SQLSMALLINT
绑定的为第几个参数,其中0代表目录。
SQLSMALLINT
参数是IN还是OUT
第四参数
SQLSMALLINT
在C语言中的传入参数的类型
第五个参数
SQLSMALLINT
SQL 数据类型的参数
第六个参数
SQLINTEGER
存储过程中参数的长度
第七个参数
SQLSMALLINT
列或参数标记表达式的小数位数。
第八个参数
SQLPOINTER
存放参数的缓冲区地址
第九个参数
SQLINTEGER
第十个参数
SQLINTEGER
指向第六个参数的地址
直接执行(SQLExecDirect)
由用户程序定义SQL语句.语句在运行时被编译并执行.
编译执行(SQLExecute)
也是由用户程序定义SQL语句,但编译和执行被分为两步:首先SQL被准备好,接下来被执行.通过这种方法,我们可以只编译SQL语句一次但执行相同的语句多次以节省时间.
1.直接执行
SQLExecDirect(hstmt, (SQLCHAR*)" ", SQL_NTS);
2.编译执行
其作用为 将SQL 语句放入指定的位置,以便于我们调用SQLExecute去执行 .
SQLRETURN
SQLHSTMT
语句句柄
SQLCHAR*
执行的语句
SQLINTEGER
语句长度
3.SQLBindCol:当我们返回结果集的时候,我们可以通过这个函数去绑定结果集,当我们执行完SQL语句后,我们可以通过调用SQLFetch(hstmt ) (其参数为语句句柄)去令游标指向对应的结果,从而通过SQLBindCol 绑定 的缓冲区去 获取相应的变量。直到SQLFetch 的返回值 为SQL_NO_DARA.
调用SQLBindCol绑定结果集合
执行SQL 语句
通过绑定的缓冲区获得结果集中的值
调用SQLFetch函数
SQLBindCol 的参数:SQLBindCol(hstmt,1,SQL_C_LONG,&reNum,4,&len);
Hstmt
1
SQL_C_LONG
&reNum
4
&len
SQL语句句柄
绑定的参数在是第几个返回列
在C语言中绑定的参数类型
指向绑定的缓冲区
存储列数据的缓冲区的大小
指向存储着缓冲区中返回数据的字节数的指针
4. SQLNumResultCols protoStatementHandle:DWORD, pNumCols:DWORD
- StatementHandle 语句句柄
- pNumCols指向一个双字的指针,其中包含了结果集的列数。
如果pNumCols指向的值为0,那么表明结果集不存在。
5. SQLRETURNSQLFreeStmt(
我们利用这个函数去关闭游标 ,解除绑定,
SQL_ CLOSE :关闭句柄所关联的游标,清除正在处理的结果集合
SQL_UNBIND:解除SQLBindCol函数为hstmt结果集合所关联的所有列缓冲区;
SQL_RESET_PARAMS:释放SQLBinParameter函数为hstmt句柄所关联的参数缓区。
SQL_DROP:关闭所有与hstmt相关联的游标,废除正在处理的结果,结
束一切对hstmt句柄的访问,并释放hstmt句柄;
5.以下为调用ODBC API的返回值列表
SQL_SUCCESS
操作顺利
SQL_SUCCESS_WITH_INFO
操作顺利但可能产生非致命错误
SQL_ERROR
操作失败
SQL_INVALID_HANDLE
使用的语句句柄非法
SQL_NEED_DATA
如果在执行SQL语句前没有提供足够的参数将会获得这个返回值.这时需调用SQLParamData或 SQLPutData函数来提交参数.
SQL_NO_DATA
如果SQL语句不返回结果集,例如只是一个查询动作,将获得这个返回值。使用户知道动作成功,但没有结果集被返回。
SQL_STILL_EXECUTING
如果异步执行SQL语句,SQLExecDirect会立刻返回这个值,表明语句正在执行。在通常情况下,如果你使用的一个多线程操作系统,异步执行是一个好主意。如果你希望异步执行,旧可以通过SQLSetStmtAttr来设置语句属性。
6.存储过程:
存储过程的定义语法 :
CREATE PROC [ EDURE ] 存储过程名 [ ;number]
。。。
AS
SQL
GO
1
语句 而且数据库专业人员可随时对存储过程进行修改但对应用程序源代码毫无影响 因
为应用程序源代码只包含存储过程的调用语句
2
如果某一操作包含大量的Transaction-SQL
3
create procedure GetSeverMessage
as
select ServerName,ServerIndex
from server
where ServerName like 'game1/_'+'%'escape '/'
GO
当我们将其参数设置为 OUT_PUT 时,说明该参数是可以返回的。我们可以通过这种方式去获得存储过程的一些数据
- 在程序中用到的ODBC API 函数
- 在程序中用到的ODBC API 函数
- 串口通信中用到的api函数
- 在Oracle数据库中用到的函数
- C#批量发送邮件程序中用到的两个函数
- 摄像机标定程序中用到的OpenCV函数
- 摄像机标定程序中用到的OpenCV函数
- 一个在数据库中用到的多功能函数
- 一些简单在开发中用到的封装函数
- ODBC API 程序 例子
- 在vs2008中用odbc数据源连mysql的方法
- 在Delphi里调用API函数动态建立ODBC数据源。
- MFC中用ODBC的使用
- 程序中用到的色值参考
- 程序开发中用到的键盘键值
- 程序中用到的几个小技巧
- 程序完成中用到的sql语句
- 一个测试中用到的小程序
- 《C语言及程序设计》实践参考——电子词典
- 《C语言及程序设计》实践项目——main函数的参数
- Constructor同学你到底是谁?
- 《C语言及程序设计》实践参考——用命令行运行程序
- 自定义View之大风车系列demo(二)
- 在程序中用到的ODBC API 函数
- Rails 表单简单使用
- android中button有几种状态?
- 上课笔记--人力资源管理
- PADS学习之路06-PADS LOGIC下拉菜单Setup
- 普通用户启动的Vim如何保存需要root权限的文件
- 欢迎使用CSDN-markdown编辑器
- rails常用插件
- [转贴]JM阐述