ODBC API简介
1. 数据类型:
通过SQLGetTypeInfo函数来获取ODBC 3.0支持的数据类型信息。由SQLGetTypeInfo返回的数据类型是数据源所支持的数据类型。
SQLRETURN SQLGetTypeInfo( SQLHSTMT StatementHandle, SQLSMALLINT DataType);
其中DataType类型为SQL Data Types的一种,具体参见
https://msdn.microsoft.com/en-us/library/ms710150(v=vs.85).aspx
同时需要了解SQL数据类型与C数据类型的对应关系:
C type identifier |
ODBC C typedef |
C type |
SQL_C_CHAR |
SQLCHAR * |
unsigned char * |
SQL_C_SSHORT[j] |
SQLSMALLINT |
short int |
SQL_C_USHORT[j] |
SQLUSMALLINT |
unsigned short int |
SQL_C_SLONG[j] |
SQLINTEGER |
long int |
SQL_C_ULONG[j] |
SQLUINTEGER |
unsigned long int |
SQL_C_FLOAT |
SQLREAL |
float |
SQL_C_DOUBLE |
SQLDOUBLE, SQLFLOAT |
double |
SQL_C_BOOKMARK[i] |
BOOKMARK |
unsigned long int[d] |
SQL_C_VARBOOKMARK |
SQLCHAR * |
unsigned char * |
SQL_C_TYPE_DATE[c] |
SQL_DATE_STRUCT |
struct tagDATE_STRUCT { SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; } DATE_STRUCT;[a] |
SQL_C_TYPE_TIME[c] |
SQL_TIME_STRUCT |
struct tagTIME_STRUCT { SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; } TIME_STRUCT;[a] |
SQL_C_TYPE_TIMESTAMP[c] |
SQL_TIMESTAMP_STRUCT |
struct tagTIMESTAMP_STRUCT { SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; SQLUINTEGER fraction;[b] } TIMESTAMP_STRUCT;[a] |
2. 常用接口:
- 连接到数据源
下面的函数用于连接到数据源:
(1)SQLAllocHandle:分配环境、连接、语句或者描述符句柄。
(2)SQLConnect:建立与驱动程序或者数据源的连接。访问数据源的连接句柄包含了包括状态、事务申明和错误信息的所有连接信息。
(3)SQLDriverConnect:与SQLConnect相似,用来连接到驱动程序或者数据源。但它比SQLConnect支持数据源更多的连接信息;
(4)SQLBrowseConnect:支持一种交互方法来检索或者列出连接数据源所需要的属性和属性值。
- 获取驱动程序和数据源信息
下面的函数用来获取驱动程序和数据源信息:
(1)SQLDataSources:能够被调用多次来获取应用程序使用的所有数据源的名字。
(2)SQLDrivers:返回所有安装过的驱动程序清单,包括对它们的描述以及属性关键字。
(3)SQLGetInfo:返回连接的驱动程序和数据源的元信息。
(4)SQLGetFunctions:返回指定的驱动程序是否支持某个特定函数的信息。
(5)SQLGetTypeInfo:返回指定的数据源支持的数据类型的信息。
- 设置或者获取驱动程序属性
下面的函数用来设置或者获取驱动程序属性:
(1)SQLSetConnectAttr:设置连接属性值。
(2)SQLGetConnectAttr:返回连接属性值。
(3)SQLSetEnvAttr:设置环境属性值。
(4)SQLGetEnvAttr:返回环境属性值。
(5)SQLSetStmtAttr:设置语句属性值。
(6)SQLGetStmtAttr:返回语句属性值。
- 设置或者获取描述符字段
下面的函数用来设置或者获取描述符字段:
(1)SQLGetDescField:返回单个描述符字段的值。
(2)SQLGetDescRec:返回当前描述符记录的多个字段的值。
(3)SQLSetDescField:设置单个描述符字段的值。
(4)SQLSetDescRec:设置描述符记录的多个字段。
- 准备SQL语句
下面的函数用来准备SQL语句:
(1)SQLPrepare:准备要执行的SQL语句。
(2)SQLBindParameter:在SQL语句中分配参数的缓冲区。
(3)SQLGetCursorName:返回与语句句柄相关的游标名称。
(4)SQLSetCursorName:设置与语句句柄相关的游标名称。
(5)SQLSetScrollOptions:设置控制游标行为的选项,在ODBC 3.0 中被SQLGetInfo和SQLSetStmtAttr接口替代
- 提交SQL请求
下面的函数用来提交SQL请求:
(1)SQLExecute:与SQLPrepare共同使用,执行准备好的SQL语句。
(2)SQLExecDirect:执行一条SQL语句。
(3)SQLNativeSql:返回驱动程序对一条SQL语句的翻译,并不执行sql语句。
(4)SQLDescribeParam:返回对SQL语句中指定参数的描述。
(5)SQLNumParams:返回SQL语句中参数的个数。
(6)SQLParamData:与SQLPutData联合使用在运行时给参数赋值。
(7)SQLPutData:在SQL语句运行时给部分或者全部参数赋值。
- 检索结果集及其相关信息
下面的函数用来检索结果集及其相关信息:
(1)SQLRowCount:返回INSERT、UPDATE或者DELETE等语句影响的行数。
(2)SQLNumResultCols:返回结果集中列的数目。
(3)SQLDescribeCol:返回结果集中列的描述符记录。
(4)SQLColAttribute:返回结果集中列的属性。
(5)SQLBindCol:为结果集中的列分配缓冲区。
(6)SQLFetch:在结果集中检索下一行元组。
(7)SQLFetchScroll:返回指定的结果行。
(8)SQLGetData:返回结果集中当前行某一列的值。
(9)SQLSetPos:在取到的数据集中设置游标的位置。这个记录集中的数据能够刷新、更新或者删除。
(10)SQLBulkOperations:执行块插入和块书签操作,其中包括根据书签更新、删除或者取数据。
(11)SQLMoreResults:确定是否能够获得更多的结果集,如果能就执行下一个结果集的初始化操作。
(12)SQLGetDiagField:返回一个字段值或者一个诊断数据记录。
(13)SQLGetDiagRec:返回多个字段值或者一个诊断数据记录。
- 取得数据源系统表的信息
下面的函数用来取得数据源系统表的信息:
(1)SQLColumnPrivileges:返回一个关于指定表的列的列表以及相关的权限信息。
(2)SQLColumns:返回指定表的列信息的列表。
(3)SQLForeignKeys:返回指定表的外键信息的列表。
(4)SQLPrimaryKeys:返回指定表的主键信息的列表。
(5)SQLProcedureColumns:返回指定存储过程的参数信息的列表。
(6)SQLProcedures:返回指定数据源的存储过程信息的列表。
(7)SQLSpecialColumns:返回唯一确定某一行的列的信息,或者当某一事务修改一行的时候自动更新各列的信息。
(8)SQLStatistics:返回一个单表的相关统计信息和索引信息。
(9)SQLTablePrivileges:返回相关各表的名称以及相关的权限信息。
(10)SQLTables:返回指定数据源中表信息。
- 终止语句执行
下面的函数用来终止语句执行:
(1)SQLFreeStmt:终止语句执行,关闭所有相关的游标,放弃没有提交的结果,选择释放与指定语句句柄相关的资源。
(2)SQLCloseCursor:关闭一个打开的游标,放弃没有提交的结果。
(3)SQLCancel:放弃执行一条SQL语句。
(4)SQLEndTran:提交或者回滚事务。
- 中断连接
下面的函数处理中断连接的任务:
(1) SQLDisconnect:关闭指定连接。
(2) SQLFreeHandle:释放环境、连接、语句或者描述符句柄。
参考:
https://msdn.microsoft.com/en-us/library/ms714562(v=vs.85).aspx
http://www.cnblogs.com/huzhongzhong/archive/2011/07/12/2104209.html
ODBC API简介的更多相关文章
- 第16讲:ODBC&JDBC简介
一.ODBC简介 1. ODBC的概念 ①ODBC:Open DataBase Connection,即开放数据库连接 ②ODBC是一种标准,它规定了不同语言的应用程序与不同数据库服务器之间通讯的方式 ...
- Web Api 简介
ASP.NET Web API 简介 ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP. ...
- ZooKeeper系列4:ZooKeeper API简介及编程
问题导读: 1.ZooKeeper API 共包含几个包? 2.如何使用ZooKeeper API 创建zookeeper应用程序? 1)ZooKeeper API 简介 ZooKeeper AP ...
- WebSocket API简介
WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从chr ...
- 构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介
构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组 ...
- Windows下使用ODBC API访问数据库之关键
本文采用SQL2005 + VS2008环境,以ODBC API方式成功连接数据库. 1.SQL安装和环境配置 这部分网上随便搜一下都有很多资料,而且很容易就可以配置成功. 注意的关键点: SA账号配 ...
- Raphael Js矢量库API简介:
Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...
- 开放数据接口 API 简介与使用场景、调用方法
此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...
- Monkey脚本API简介
一.API简介 LaunchActivity(pkg_name, cl_name):启动应用的Activity.参数:包名和启动的Activity. Tap(x, y, tapDuration): 模 ...
随机推荐
- java 经典程序 100 例
1,编写程序,判断给定的某个年份是否是闰年.闰年的判断规则如下:( 1)若某个年份能被 4 整除但不能被 100 整除,则是闰年.( 2)若某个年份能被 400 整除,则也是闰年. import ja ...
- ListIterator接口,双向输出。
1,ListIterator接口与Itreator接口的区别. 2,使用限制. 定义如下: public interface ListIterator<E>extends Iterator ...
- C# ASP.NET 优化程序性能、降低内存使用、提高程序运行速度
首先纪念一下今天的股票大跌抓个图,虽然我自己损失不是很大,但是应该大多人都损失不小.也可能有人会继续跳楼,也可能是股市一个新的转折点来了. 接着还是重点关注自己写代码优化的主题吧.软件系统当访问量不大 ...
- Leetcode:378. Kth Smallest Element in a Sorted Matrix
题目: Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the ...
- tomcat7配置虚拟目录
1.tomcat7的安装路径下,D:\Program Files\java\Tomcat 7.0\conf,修改server.xml文件,如图: 在</Host>标签前,添加上图选中部分即 ...
- 使用MEF实现通用参数设置
通用后台管理系统必备功能模块包含日志管理,权限管理,数据字典,参数配置等功能.参数设置主要用于设置系统运行所需的一些基础性配置项,比如redis缓存,mq消息队列,系统版本等信息.好的参数设置需要达到 ...
- 《Java EE 开发技术与案例教程》 这是一本好书啊:简洁精辟(相见恨晚)
第一章:Java EE 概述 1.get:JPA:Java Persistence API, 数据持久化API: JPA是一种ORM规范,它的实现实例:Hibernate.mybatis 2.Web ...
- no result defined for action
1.no result defined for action .......and result input 或者 no result defined for action .......and ...
- 模仿iframe框架,由分隔栏动态改变左右两侧div大小———基于jQuery
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- Linux 部署 nginx服务代理
原文地址:http://www.cnblogs.com/ants/p/5732337.html#_label5 参考地址:http://www.cnblogs.com/hustskyking/p/ng ...