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简介的更多相关文章

  1. 第16讲:ODBC&JDBC简介

    一.ODBC简介 1. ODBC的概念 ①ODBC:Open DataBase Connection,即开放数据库连接 ②ODBC是一种标准,它规定了不同语言的应用程序与不同数据库服务器之间通讯的方式 ...

  2. Web Api 简介

    ASP.NET Web API 简介  ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP. ...

  3. ZooKeeper系列4:ZooKeeper API简介及编程

    问题导读: 1.ZooKeeper API 共包含几个包? 2.如何使用ZooKeeper API 创建zookeeper应用程序? 1)ZooKeeper API 简介   ZooKeeper AP ...

  4. WebSocket API简介

    WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从chr ...

  5. 构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介

    构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组 ...

  6. Windows下使用ODBC API访问数据库之关键

    本文采用SQL2005 + VS2008环境,以ODBC API方式成功连接数据库. 1.SQL安装和环境配置 这部分网上随便搜一下都有很多资料,而且很容易就可以配置成功. 注意的关键点: SA账号配 ...

  7. Raphael Js矢量库API简介:

    Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...

  8. 开放数据接口 API 简介与使用场景、调用方法

    此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...

  9. Monkey脚本API简介

    一.API简介 LaunchActivity(pkg_name, cl_name):启动应用的Activity.参数:包名和启动的Activity. Tap(x, y, tapDuration): 模 ...

随机推荐

  1. 2016的ChinaJoy沦为ChinaVR?

    China Joy已沦为ChinaVR,厂商烧钱参加? 在上海超过40度的高温天下,游戏爱好者们汗流满面地排起长队,拥挤地通过安检进入场馆,但是很快感受到了一丝凉意. ShowGirl少了 " ...

  2. [No000078]Python3 字符串操作

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- '''Python 字符串操作 string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分 ...

  3. linux下拷贝命令中的文件过滤操作记录

    在日常的运维工作中,经常会涉及到在拷贝某个目录时要排查其中的某些文件.废话不多说,下面对这一需求的操作做一记录: linux系统中,假设要想将目录A中的文件复制到目录B中,并且复制时过滤掉源目录A中的 ...

  4. 解决asp.net(C#)中 DataTime 空值 null为0001-01-01

    SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究 在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00:00,C#中 ...

  5. asp.net(C#)网站发布后 Global.asax 里 Application_Error 不执行的问题

    现象 在 Global.asax 用 Application_Error 捕捉了http的404,500等错误,在本机测试正常,发布后无效,几经周折终于解决了... 程序是这样设计的 Applicat ...

  6. 为什么 Java 8 中不再需要 StringBuilder 拼接字符串

    为什么 Java 8 中不再需要 StringBuilder 拼接字符串 来源:codeceo 发布时间:2016-12-27 阅读次数:427 0   在Java开发者中,字符串的拼接占用资源高往往 ...

  7. python基础-函数式编程

    python基础-函数式编程  高阶函数:map , reduce ,filter,sorted 匿名函数:  lambda  1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...

  8. html与htm区别

    1.index.html与index.htm同时有,先访问.html 2.htm是为了兼容以前的DOS系统.

  9. CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP在第三方上边使用发送邮件

    一前言 本来使用qq邮箱发送邮件,然后借助sendEmail来发送邮件告警,但是有每天的200封限制,很是不爽,于是想到来自己搭建邮件服务器来解决这个问题,关于使用sendEmail来借助qq邮箱来发 ...

  10. 创建.emacs.d目录和.emacs文件

    1.双击bin下的addpm.exe 2.HKEY_CURRENT_USER->Software->GNU->Emacs 新建字符串值HOME,数值数据为emacs的安装路径 3.创 ...