- Windows下搭建ODBC数据库源:
- 桌面->我的电脑->控制版面->查看方式改为”大图标”->管理工具->数据源(ODBC)
- 用户DSN->添加->选择KingbaseES 7 ODBC Driver->完成
- 填写数据源名称kingbase,数据库名KRMS,通讯方式设置为TCPIP,服务器127.0.0.1,端口54321,最下面选择使用用户输入的用户名和密码验证,用户名SYSTEM,密码为MANAGER
- 完成后截图:
- 点击下面的测试连接:
连接测试成功
二,Windows下使用C程序编写脚本进行ODBC连接测试:
- 编写C脚本内容:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <odbcinst.h>
#include <sqlext.h>
#define CHECK_RET(retcode) do {if (!SQL_SUCCEEDED(retcode)) goto exit;}while(0)
int
main(int argc, char *argv[])
{
SQLHANDLE henv = NULL, hdbc = NULL, hstmt = NULL;
SQLRETURN ret;
SQLCHAR strcon[] = "Driver={KingbaseES 7 ODBC Driver};Server=127.0.0.1;Database=SAMPLES;Uid=SYSTEM;Pwd=MANAGER;";
SQLCHAR strout[256] = {NULL};
SQLCHAR error_message[SQL_MAX_MESSAGE_LENGTH] = {0};
SQLCHAR sqlstat[10] = {0};
SQLINTEGER nativeerr = 0;
SQLCHAR buf[1024] = {0};
SQLSMALLINT outlen;
ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
ret = SQLDriverConnect(hdbc, NULL, strcon, SQL_NTS, strout, sizeof(strout), &outlen, SQL_DRIVER_NOPROMPT);
CHECK_RET(ret);
ret= SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
CHECK_RET(ret);
ret = SQLPrepare(hstmt, (SQLCHAR*)"select ename from PUBLIC.emp", SQL_NTS);
CHECK_RET(ret);
ret = SQLExecute(hstmt);
CHECK_RET(ret);
while(true)
{
ret = SQLFetch(hstmt);
if (SQL_NO_DATA == ret)
break;
CHECK_RET(ret);
ret = SQLGetData(hstmt, 1, SQL_C_CHAR, buf, sizeof(buf), NULL);
CHECK_RET(ret);
printf("%s\n", buf);
}
return 0;
exit:
if(hdbc)
{
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, sqlstat, &nativeerr, error_message, SQL_MAX_MESSAGE_LENGTH, NULL);
fprintf(stderr, "\nsqlstate:%s, native_err:%d, errmsg:%s\n", sqlstat, nativeerr, error_message);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
if(hstmt)
{
SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, 1, sqlstat, &nativeerr, error_message, SQL_MAX_MESSAGE_LENGTH, NULL);
fprintf(stderr, "\nsqlstate:%s, native_err:%d, errmsg:%s\n", sqlstat, nativeerr, error_message);
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
ok:
return 0;
}
- 验证脚本Server=127.0.0.1;Database=SAMPLES;Uid=SYSTEM;Pwd=MANAGER等用户密码信息的正确性
- 验证没问题后运行测试:
连接测试成功.
三,Linux下搭建ODBC数据库源:
- 打开终端,切换到root用户,在/usr/local/etc目录下创建odbc.ini和odbcinst.ini文件
- 将/opt/Kingbase/ES/V7/unixodbc/etc目下下的odbc.ini和odbcinst.ini内容添加到新建的文件中;
- odbc.ini内容:
[kingbase]
Description = KingbaseES
Driver = KingbaseES 7 ODBC Driver
Servername = 127.0.0.1
Port = 54321
Username = SYSTEM
Password = McdANAGER
Database = KRMS
odbcinst.ini内容:
[KingbaseES 7 ODBC Driver]
Description = KingbaseES 7 ODBC Driver for Linux
Driver = /opt/Kingbase/ES/V7/odbc/kdbodbc7.so
Setup = /opt/Kingbase/ES/V7/odbc/kdbodbc7S.so
UsageCount = 1
- 在/opt/Kingbase/ES/V7/unixodbc/bin目录下,
执行./odbcinst -i -d -f /usr/local/etc/odbcinst.ini
./odbcinst -i -s -f /usr/local/etc/odbc.ini
命令
- 切换的root目录设置系统环境变量:
export LD_LIBRARY_PATH='pwd':/opt/Kingbase/ES/V7/unixodbc/lib:/opt/Kingbase/ES/V7/lib:/opt/Kingbase/ES/V7/bin
- 进入到kingbase数据库的根目录执行
/opt/Kingbase/ES/V7/unixodbc/bin/isql kingbase
命令,测试成功登陆到isql
- 测试截图:
登陆成功