PHP用odbc连接金仓数据库,Linux ODBC 连接达梦、人大金仓数据库

下载及安装数据库

安装数据库驱动

需要到达梦和人大金仓官网注册账号,下载试用版即可。

通过下载包里面的install.bin文件进行安装,安装时选择client模式,因为只需要连接数据库的驱动文件。

安装ODBC驱动

sudo apt install unixodbc unixodbc-dev unixodbc-bin

修改配置文件

设置驱动

vi /etc/odbcinst.ini

[DM7]

Description = dm odbc

Driver = /home/yu/dmdbms/bin/libdodbc.so

[KingbaseES 7 ODBC Driver]

Description = KingbaseES 7 ODBC Driver for Linux

Driver = /home/yu/kingbase7/odbc/kdbodbc7.so

Setup = /home/yu/kingbase7/odbc/kdbodbc7S.so

UsageCount = 1

设置连接

vi /etc/odbc.ini

[dm]

Description = dm7 dsn

Driver = DM7

SERVER =192.168.4.103

UID = SYSDBA

PWD = 123456789

TCP_PORT = 5236

[kingbaseES]

Description = KingbaseES ODBC Data Source

Driver = KingbaseES 7 ODBC Driver

Database = SAMPLES

Servername = 192.168.4.100

Username = system

Password = 123456789

Port = 54321

MAXCONNECT = 512

Fetch = 100

MaxVarcharSize = 254

MaxTextSize = 8000

LFConversion = 0

CaseSensitive = 0

ClientEncoding = UTF-8

UseServerPrepare = 1

ExecutePreparedStatement = 1

UseServerCursor = 0

连接数据库

指定动态链接库

export LD_LIBRARY_PATH=/home/yu/dmdbms/bin:/home/yu/kingbase7/lib:/home/yu/kingbase7/bin:/home/yu/kingbase7/odb

通过工具连接

连接dm数据库

isql dm

连接人大金仓数据库

isql kingbaseES

通过程序连接

#include

#include

#include

#include

int main() {

SQLHENV sqlhenv;

SQLHDBC sqlhdbc;

char stat[10];

SQLINTEGER err, rowanz,id;

SQLSMALLINT mlen;

char msg[200],buffer[200];

int res, ret = -1;

res = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlhenv);

if (res != SQL_SUCCESS && res != SQL_SUCCESS_WITH_INFO) {

printf("error alloc env\n");

goto _exit;

}

res = SQLSetEnvAttr(sqlhenv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);

if (res != SQL_SUCCESS && res != SQL_SUCCESS_WITH_INFO) {

printf("error set env env\n");

goto _free_env;

}

res = SQLAllocHandle(SQL_HANDLE_DBC, sqlhenv, &sqlhdbc);

if (res != SQL_SUCCESS && res != SQL_SUCCESS_WITH_INFO) {

printf("error all dbc env\n");

goto _free_env;

}

SQLSetConnectAttr(sqlhdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER *)5, 0);

res = SQLConnect(sqlhdbc, (SQLCHAR *)"kingbaseES", SQL_NTSL, (SQLCHAR *)"", SQL_NTSL, \

(SQLCHAR *)"", SQL_NTSL);

if (res != SQL_SUCCESS && res != SQL_SUCCESS_WITH_INFO) {

SQLGetDiagRec(SQL_HANDLE_DBC, sqlhdbc,1,

(SQLCHAR *)stat, &err, (SQLCHAR *)msg, 100, &mlen);

printf("%s (%d)\n",msg, err);

goto _free_dbc;

}

ret = 0;

_free_dbc:

SQLFreeHandle(SQL_HANDLE_DBC, sqlhdbc);

_free_env:

SQLFreeHandle(SQL_HANDLE_ENV, sqlhenv);

_exit:

return ret;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值