ODBC数据库源搭建

  • Windows下搭建ODBC数据库源:
  1. 桌面->我的电脑->控制版面->查看方式改为”大图标”->管理工具->数据源(ODBC)
  2. 用户DSN->添加->选择KingbaseES 7 ODBC Driver->完成
  3. 填写数据源名称kingbase,数据库名KRMS,通讯方式设置为TCPIP,服务器127.0.0.1,端口54321,最下面选择使用用户输入的用户名和密码验证,用户名SYSTEM,密码为MANAGER
  4. 完成后截图:

  1. 点击下面的测试连接:

连接测试成功

二,Windows下使用C程序编写脚本进行ODBC连接测试:

  1. 编写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;

}

  1. 验证脚本Server=127.0.0.1;Database=SAMPLES;Uid=SYSTEM;Pwd=MANAGER等用户密码信息的正确性
  2. 验证没问题后运行测试:

连接测试成功.

三,Linux下搭建ODBC数据库源:

  1. 打开终端,切换到root用户,在/usr/local/etc目录下创建odbc.ini和odbcinst.ini文件
  2. 将/opt/Kingbase/ES/V7/unixodbc/etc目下下的odbc.ini和odbcinst.ini内容添加到新建的文件中;
  3. 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

  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

命令

  1. 切换的root目录设置系统环境变量:

export LD_LIBRARY_PATH='pwd':/opt/Kingbase/ES/V7/unixodbc/lib:/opt/Kingbase/ES/V7/lib:/opt/Kingbase/ES/V7/bin

  1. 进入到kingbase数据库的根目录执行

/opt/Kingbase/ES/V7/unixodbc/bin/isql kingbase

命令,测试成功登陆到isql

  1. 测试截图:

登陆成功

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值