金仓数据库KingbaseES ODBC使用指南一 --概述

  1. 概述
    KingbaseES ODBC 是纯C的 ODBC 驱动程序,它支持 Microsoft ODBC 3.0 标准。通过 KingbaseES ODBC Driver,应用程序可以完成与数据库的连接、执行SQL语句、从数据库中获取结果、获取状态及错误信息、终止事务和连接等操作。

在本章中详细说明了 KingbaseES 对 ODBC 3.0 的标准接口函数、函数参数、参数选项的支持情况,以及使用时应该注意的问题。

  1. ODBC特性支持限制
    KingbaseES 对 ODBC 3.0 的支持是有限制的,本节将从系统边界值等方面描述这些限制。
    2.1. 系统边界值
    表1 系统边界值
    系统特性 最小值 最大值
    ODBC每个环境句柄的连接数 0 128
    2.2. 其他限制
  2. SQLBindCol
    具体的列中的类型可以转化为C数据类型,参见表2.2.1。
  3. SQLBindParameter
    支持从C数据类型往SQL数据类型的转化,参见表2。
    列类型与SQL语句类型的对应关系参见表3。
  4. SQLGetData
    具体的列中的类型可以转化为C数据类型,参见表1。
  5. BLOB
    BLOB 数据类型可以通过编程方式插入(见示例程序2),也可以通过调用 SQL 语句 insert into [table name] values(1,X’41424344’) 进行插入。
  6. CLOB
    与 BLOB 类似,CLOB 数据类型可以通过编程方式插入,也可以通过调用 SQL 语句 insert into [table name] values(1, ‘ABCD’) 进行插入。
    2.2.1. 表中的列类型到C数据类型的转换表
    调用 SQLBindCol 和 SQLGetData 时可以参照该表。
    表中的列定义可以是下表最左一列中列出的12种类型, ODBC 的C数据类型可以是下表的 第一行所列的20种类型。
    如果表定义为左边的某种类型,那么当调用 SQLGetData 或者 SQLBindCol 时 TargeType 参数只能是该数据类型对应的一行中填有 “Y” 的C数据类型。
    例如,当表中的列定义为 date,那么调用 SQLGetData 或者 SQLBindCol 时 TargetType 参数就可以是 SQL_C_DEFAULT,SQL_C_CHAR,SQL_C_DATE,SQL_C_TIME,SQL_C_TIMESTAMP,而不能是 SQL_C_TINYINT。
    表2 表中的列类型到C数据类型的转换表
    表中的列定义 C数据类型
    SQL_C_
    DEFAULT SQL_C_
    CHAR SQL_C_
    TINYINT SQL_C_
    UTINYINT SQL_C_
    STINYINT SQL_C_
    SHORT SQL_C_
    USHORT SQL_C_
    SSHORT SQL_C_
    LONG SQL_C_
    ULONG SQL_C_
    SLONG SQL_C_
    DOUBLE SQL_C_
    SBIGINT SQL_C_
    UBIGINT SQL_C_
    FLOAT SQL_C_
    BINARY SQL_C_
    BIT SQL_C_
    DATE SQL_C_
    TIME SQL_C_
    TIMESTAMP
    BIGINT Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
    INTEGER Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
    SMALLINT Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
    TINYINT Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
    NUMERIC DECIMAL Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
    FLOAT DOUBLE REAL Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
    BIT Y Y
    BYTEA BLOB Y Y
    BOOL BOOLEAN INTERVAL Y Y Y Y Y
    CHAR VARCHAR Y Y Y Y Y
    TEXT CLOB Y Y

2.2.2. C数据类型到SQL数据类型的转换表
调用 SQLBindParameter 时可以参照该表。
ODBC 的C数据类型可以使用下表的第一行所列的18种类型,SQL 语句类型可以使用下表最左一列中列出的19种类型。
如果绑定参数的 ValueType为某种C数据类型,那么当调用 SQLBindParameter 时 ParameterType 参数只能是该C数据类型对应的一列中填有"Y"的 SQL 数据类型。
如果绑定参数的 ValueType为 SQL_C_CHAR,那么调用 SQLBindParameter 时 ParameterType 参数就可以是 SQL_CHAR,SQL_VARCHAR,SQL_LONGVARCHAR,而不能是 SQL_DECIMAL。
表3 C数据类型到SQL数据类型的转换表
表中的列定义 C数据类型
SQL_C_
DEFAULT SQL_C_
CHAR SQL_C_
TINYINT SQL_C_
UTINYINT SQL_C_
STINYINT SQL_C_
SHORT SQL_C_
USHORT SQL_C_
SSHORT SQL_C_
LONG SQL_C_
ULONG SQL_C_
SLONG SQL_C_
DOUBLE SQL_C_
SBIGINT SQL_C_
UBIGINT SQL_C_
FLOAT SQL_C_
BINARY SQL_C_
BIT SQL_C_
DATE SQL_C_
TIME SQL_C_
TIMESTAMP
SQL_CHAR Y Y Y Y Y
SQL_VARCHAR Y Y Y Y Y
SQL_LONGVARCHAR Y Y
SQL_DECIMAL Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_NUMERIC Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_BIT Y Y
SQL_TINYINT Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_SMALLINT Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_INTEGER Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_BIGINT Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_REAL Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_FLOAT Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_DOUBLE Y Y Y Y Y Y Y Y Y Y Y Y Y Y
SQL_BINARY Y Y
SQL_VARBINARY Y Y
SQL_LONGVARBINARY Y Y
SQL_TYPE_DATE Y Y Y Y
SQL_TYPE_TIME Y Y Y Y
SQL_TYPE_TIMESTAMP Y Y Y Y

2.2.3. 表中的列类型到SQL数据类型的映射表
下表列出了调用 SQLBindParameter时表中的列定义数据类型与SQL类型的对应关系:
表4 列类型到SQL数据类型的映射表
表中的列定义 可转化为如下SQL数据类型
BIGINT SQL_BIGINT
INTEGER SQL_INTEGER
SMALLINT SQL_SMALLINT
TINYINT SQL_TINYINT
DECIMAL NUMERIC SQL_DECIMAL, SQL_NUMERIC
REAL FLOAT DOUBLE SQL_REAL, SQL_FLOAT, SQL_DOUBLE
BYTEA SQL_BINARY, SQL_VARBINARY
BLOB SQL_LONGVARBINARY
BOOL BOOLEAN SQL_BIT
DATE TIME TIMESTAMP SQL_DATE, SQL_TIME, SQL_TIMESTAMP
CHAR VARCHAR TEXT SQL_CHAR, SQL_VARCHAR
CLOB SQL_LONGVARCHAR
当表中的数据类型定义为第一列的某种类型,那么当调用 SQLBindParameter 时,ParameterType 只能为其对应行中的第二列的值。如:表中的列类型为 INTEGER(INT),那么对应的 SQL 数据类型只能为 SQL_INTEGER,而不能为其它的 SQL 数据类型;否则,数据转化将会出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值