暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES ODBC驱动的引用

数据猿 2023-11-17
2031


关键字:人大金仓、KingbaseES、ODBC

  1. 概述

由微软提出的ODBC(开放式数据库互连),为访问数据库提供统一的接口(API)。其调用流程为:首先应用程序调用驱动管理器以加载与数据库相对应的ODBC驱动,而后在通过ODBC驱动与数据库建立连接通信。Kingbase ODBC驱动程序为动态链接库可以免安装,在Windows中的驱动为“kdbodbc30a.dll”以及在Linux中的驱动为“kdbodbcw.so”。

  1. ODBC驱动引用
    1. Windows驱动引用

1.通过登录官网www.kingbase.com.cn-产品与方案-通用性数据库-下载试用-了解详情-接口驱动,找到ODBC-WINDOWS获取ODBC Windows版驱动。

2.将获取到的官网驱动进行解压,解压后有两种版本的驱动,一种是64位版本,另一种是86位版本。在后续引用时需根据电脑的位数而进行选择(系统位数查看方法:使用“Win+R”组合键打开“运行对话框”,在对话框中输入“msinfo32.exe”后点击确认按钮便能在“系统信息”中查看得到电脑的位数),只有电脑的位数与ODBC驱动的位数一致时,才能正常使用。如下图所示,可以查看得到系统为64位的版本,因此后续应选择“x64_ANSI_Release”文件中的ODBC驱动。

3.在确定使用的ODBC版本后,通过“Win+R”组合键打开“运行对话框”,在对话框中输入“regedit”打开注册表编辑器。在下拉项“HKEY_LOCAL_MACHINE\SOFTWARE\ODBC”中选择“ODBCINST.INI”,右击选择“新建-项”添加ODBC驱动。如下图所示,添加了名为“KingbaseES 8.6 ODBC Driver ANSI”的驱动。

4.新建驱动完成后,左键点击“KingbaseES 8.6 ODBC Driver ANSI”便能查看驱动的详细信息,若是新建驱动则需重新添加驱动信息如下图所示:

其中“Driver”、“Setup”属性的值为上述操作步骤2中与电脑位数的一致的.dll文件的路径与驱动名,其形式为“`PATH`\kdbodbc30a.dll”。

5.添加完整驱动信息后,还需在“ODBCINST.INI”中的“ODBC Drivers”中添加,新建的驱动名(必须与步骤3中新建的驱动名一致),如下图所示。

至此,Windows中ODBC驱动已经注册完成。

6.在ODBC数据源中添加新注册的驱动,首先打开ODBC数据源管理器:“开始”-“设置”-“控制面板”-“管理工具”-“数据源(ODBC)”(若是Windows11中“开始”-“设置”-“控制面板”-“Windows工具”-“ODBC数据源”)。而后点击“系统DSN”-“添加”按钮,最后在弹出的对话框“创建新数据源”的窗口中选择上述新建的ODBC驱动。点击“完成”按钮后便会弹出“KingbaseES ODBC数据源配置”对话框,如下图所示:

7.在“KingbaseES ODBC数据源配置”对话框输入相应的要连接KingbaseES服务器端的信息,点击“测试”按钮后便可测试所配置的数据源能否连接上服务器。如下图弹出“Connection test”窗口并显示连接成功字样。

至此,Windows中驱动与数据源创建已完成,后续可使用该驱动或数据源连接服务器。

    1. Linux驱动引用

1. 在非Windows平台使用过使用unixODBC来作为标准平台管理以及访问数据源。因此需先安装unixODBC。登录unixODBC官网www.unixodbc.org选择“Download”后便可根据需要选择相应的unixODBC版本进行下载,通用的unixODBC版本为“unixODBC-2.3.4”。

2. 获取unixODBC安装包后,进行解压与安装。安装过程中只要分为三步:一、“./configure --prefix=`PATH`\release”配置安装路径;二、编译“make”;三、安装“make install”。安装完成后进入到“release”目录后,可以看到该目录包含五个子目录:

其中“bin”目录下存放着可执行程序,“etc”目录下存放着.ini的配置文件,“include”目录下存放着相应的头文件,“lib”目录下存放着动态库,“share”目录下存放着一些杂项文件。

至此,unixODBC便安装完成。

3.通过登录官网www.kingbase.com.cn-产品与方案-通用性数据库-下载试用-了解详情-接口驱动,找到ODBC-WINDOWS获取ODBC Linux版驱动,并根据目标的操作系统选择相应的ODBC驱动版本并将获取到的驱动包解压到Linux中。驱动包中“kdbodbca.so”“kdbodbcw.so”为ODBC驱动,其余的.so为驱动所需的依赖。

4.在获取到Linux ODBC驱动(通常使用的版本为“kdbodbcw.so”)后,记录驱动所在路径以及驱动名。进入到unixODBC的安装目录下的“etc”子目录,在该目录下有两个.ini文件,odbcinst.ini文件为配置ODBC驱动的配置文件,odbc.ini文件为配置ODBC数据源的驱动文件。

odbcinst.ini驱动配置文件可以参照以下模板进行编写,创建了名为“KingbaseES 8.6 ODBC Driver”的驱动:

odbc.ini驱动配置文件可以参照以下模板进行编写:

如上,便创建了名为“kingbase8”的数据源,数据源所使用的驱动为“odbcinst.ini”文件中创建的“KingbaseES 8.6 ODBC Driver”。

至此,ODBC驱动与数据源创建完成。

5.在进行与服务器端的连接测试前还需添加环境变量,如下图所示。其中`path`路径为上述编辑的“odbcinst.ini”与“odbc.ini”文件所存放的路径。

6.通过使用unixODBC中的可执行程序进行连接服务器的测试,进入到安装unixODBC的“release/bin”目录下,通过执行“./isql kingbase8”使用数据源为“kingbase8”进行与服务器端的连接,若连接成功,则会显示如下:

若出现下图所示,则表示连接失败。首先可通过执行“./odbcinst –j”查看环境变量是否配置正确,在保证环境变量配置的情况下在通过 “./isql kingbase8 -v”增加显示详细错误信息,最后再根据提示的错误信息进行原因查找,直到连接成功。

至此,在Linux中驱动与数据源创建已完成,后续可使用该驱动或数据源连接服务器。

  1. ODBC API初使用
    1. 配置编译环境

如下图所示,添加编译所需头文件及库文件,其中“path”为2.2章节中步骤2中unixODBC的安装路径。

    1. 创建连接

初始化 ODBC 环境并创建一个到数据库的连接:

1. 初始化 ODBC 的环境资源

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);

2. 设置 ODBC 的版本

SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);

3. 申请连接句柄

SQLAllocConnect(env, &conn);

4. 使用数据源名建立连接

SQLDriverConnect(conn, NULL, (SQLCHAR*)dsn, SQL_NTS, str, sizeof(str), &strl,SQL_DRIVER_COMPLETE);

5. 申请语句句柄,为后续调用做准备

SQLAllocHandle(SQL_HANDLE_STMT, conn, &hstmt);

    1. 断开连接

1.断开连接

SQLDisconnect(conn);

2. 释放连接句柄

SQLFreeHandle(SQL_HANDLE_DBC, conn);

3. 释放环境句柄

SQLFreeHandle(SQL_HANDLE_ENV, env);

    1. 执行SQL语句

1.不使用SQLPrepare执行SQL语句:

使用SQLExecDirect(hstmt, (SQLCHAR *)sql, SQL_NTS)接口直接执行SQL语句。

2.使用SQLPrepare执行SQL语句:

1. 使用SQLBindParameter绑定缓存;

2. 使用SQLPrepare准备SQL语句;

3. 使用SQLExecute执行设置。

    1. 连接与断开示例

如下图所示,使用数据源“kingbase8”进行数据库的连接:

如下图所示为断开与数据库的连接:

参考资料

提供该题目相关内容在产品手册中可以系统学习的位置,例如:

《KingbaseES 客户端编程接口指南-ODBC》

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论