C/C++教程

炫“库”行动-人大金仓有奖征文-KES 兼容Oracle的DCI接口使用说明

本文主要是介绍炫“库”行动-人大金仓有奖征文-KES 兼容Oracle的DCI接口使用说明,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 【本文正在参与炫“库”行动-人大金仓有奖征文】

活动链接:  CSDN

KingbaseES 兼容 Oracle 的数据访问接口 Database Call Interface(以下简称DCI)的使用说明


DCI 支持的数据类型

DCI 支持的数据类型

数据类型

类型说明

SQLT_CHR

字符串类型

SQLT_NUM

数值数据类型

SQLT_INT

整数类型(当指定长度为1时,对应 C 的 BYTE 类型;长度为2时,对应C的 short 类型;长度为4时,对应C的 int 类型;长度为8时,对应C的 int64 类型)

SQLT_FLT

浮点数类型(当指定的长度为4时,对应C数据类型 float,当指定长度为8时,对应C数据类型 double)

SQLT_STR

变长字符串类型(末尾带有’0’结束符)

SQLT_VNU

变长数值类型

SQLT_LNG

长整型类型

SQLT_VCS

变长字符串类型

SQLT_DAT

日期数据类型

SQLT_BIN

二进制类型

SQLT_LBI

长二进制类型

SQLT_UIN

无符号整数类型

SQLT_LVC

超长的长整型(或字符串)类型

SQLT_LVB

超长的二进制类型

SQLT_AFC

ANSI定长字符串类型

SQLT_AVC

ANSI变长字符串类型

SQLT_CUR

游标类型

SQLT_CLOB

字符大对象类型

SQLT_BLOB

二进制大对象类型

SQLT_RSET

游标类型

SQLT_ODT

标准时间类型(兼容 Oracle 的 DCIDate 类型)

SQLT_DATE

ANSI日期类型

SQLT_TIME

时间类型

SQLT_TIME_TZ

带有区域的时间类型

SQLT_TIMESTAMP

时间戳类型

SQLT_TIMESTAMP_TZ

带有区域的时间戳类型

SQLT_TIMESTAMP_LTZ

带有本地区域的时间戳类型

SQLT_INTERVAL_YM

YEAR-MONTH的时间间隔类型

SQLT_INTERVAL_DS

DAY-SECOND的时间间隔类型

 Linux平台工程搭建

  1. 设置环境变量:export KINGBASE_CONFDIR指定sys_service.conf配置文件所在目录路径,配置方法请参照”DCI指南->概述->服务的配置方法与参数说明”;export LD_LIBRARY_PATH指定 DCI动态库所在目录路径,应用程序在运行时加载  

服务的配置方法与参数说明

DCI 通过服务名连接数据库。服务在文件 sys_service.conf 中配置。

在 DCI 中,可使用的参数和含义如下所示:

  • host 主机名

  • port 端口号

  • dbname 数据库名

  • UseExtendedProtocol 使用扩展协议(取值0或者1)

  • UsePackage 是否使用 Package(兼容 Oracle 的 Package 功能)(取值0或者1)

  • Print 是否打印语句信息(输出到标准输出,而非日志文件;取值0或者1)

  • DCILog 指定日志信息文件的保存路径(文件可不存在,但是其父目录必须存在,并且有写权限) 日志配置是全局生效的,所以DCI只会根据找到的第一个有效的日志参数值为准。因此如果有多个数据源都有日志配置,其实也只有第一个日志配置参数生效。

  • DCILogLevel 指定日志级别,可取值为:LOG / DEBUG1 / DEBUG2 / DEBUG3 / DEBUG4 / DEBUG5

  • UseDciDat

    当 UseDciDat=0 时,对于数据库中的timestamp类型,返回的DCI类型为SQLT_DAT,默认值为1。

    当 UseDciDat=1 时,对于数据库中的timestamp(0),返回的 DCI类型为SQLT_DAT;对于其他的timestamp类型返回的DCI类型为SQLT_TIMESTAMP。

    当 UseDciDat=2 时,对于数据库中的timestamp类型,无论精度是多少,返回的DCI类型为SQLT_TIMESTAMP。

    UseDciDat 取 0,1,2 以外的值时,接口不作任何处理。

  • AutoCommit 是否采用自动提交事务方式,默认是1,表示采用自动提交模式;如果指定为0,表示采用手动提交模式。

  • BatchInsertSize_Ext 批量DML扩展优化

    指定是否开启批量INSERT,UPDATE,DELETE扩展优化,默认值为0表示关闭。如果指定为1,则会开启批量DML扩展优化。该参数需要使用2021年7月15号以后的V8R6C4版本的数据库才能支持。

注意:

  • sys_service.conf 文件的书写格式如下:

    [servicename1]
    keyword=value
    ...
    
    [servicename2]
    ...
    
    示例:
    
    [kingbase]
    dbname=SAMPLES
    port=54321
    
  • 在 sys_service.conf 文件中服务名使用方括号 '[]' 识别, 如果出现多个相同的服务名,第一个出现的那个将被使用;如果一个服务中出现多个相同参数(host 除外),最后一个出现的那个将被使用;如果参数是 host,则直接把其 host 值加入 host 列表中。

  • 如果有多个 host 值可以使用“|”将它们分隔开或使用“( )”将他们括起来。

  • sys_service.conf 文件每行不得超过 256 个字符,使用“#“来进行注释

  • sys_service.conf 文件所在路径:

    DCI接口提供两种配置方法,用来建立与sys_service.conf的关联:

    • 根据不同平台,将config文件夹中的sys_service.conf拷贝到指定的路径下:

      Windows XP指定路径为:X:Documents and SettingsAll UsersApplication DataKingbaseES 目录。

      Windows 7指定路径为:X:ProgramDataKingbaseES 目录。

      Linux指定路径为:/etc/KingbaseES 目录。

      注:1. 路径中KingbaseES文件夹需要用户自己建立;

      1. X为系统盘符;

      2. 在Windows平台,需注意Application Data与ProgramData为系统隐藏文件夹。

    • 指定环境变量

      在Windows和Linux平台,用户可以根据需要更改 sys_service.conf 文件的位置,但在连接数据库之前需要通过设置环境变量 KINGBASE_CONFDIR 指定其所在目录的路径。

  • keyword 格式说明:keyword 以及 其后的 value 不区分大小写;keyword 之前以及'='前后允许有空格,但 keyword 和 value 内部的空格不会被忽略;若想将 keyword 赋为空串,则 '=' 后的 value 保持空白即可('' 或 "" 不会作为空串而是作为 value 值处理)。 

 

【本文正在参与炫“库”行动-人大金仓有奖征文】

活动链接:  CSDN

这篇关于炫“库”行动-人大金仓有奖征文-KES 兼容Oracle的DCI接口使用说明的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!