南大通用GBase 8s GCI使用指南

原文链接:https://www.gbase.cn/community/post/4319
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在企业级数据库应用开发中,高效访问和操作数据库是提升应用性能的关键。南大通用GBase 8s数据库系统提供了GCI(GBase Client Interface)编程接口,允许开发者通过C语言方便地访问和操作数据库。本文将详细介绍GCI的使用,包括环境设置、程序编译、以及如何运行GCI程序,帮助开发者快速掌握GBase 8s数据库的客户端开发。

一、IDS和GCI的安装位置介绍。

  1. 安装ids、csdk(本文默认ids和csdk是安装在一起的)如:/home/gbase

  2. 解压GCI包(位置无特殊要求)如:/home/gci

  3. 进入etc目录下修改client.ksh

cd /home/gci/etc
vim client.ksh

GCICLIENTDIR=/home/gci  (gci路径)

GBASEDBTCSDK=/home/gbase (csdk路径)

GBASEDBTSERVER=ol_gbasedbt (实例名)

二、编译GCI程序需要设定的环境变量及含义。

1、export DBUSER=gbasedbt export DBPWD=Big4ifmx

连接数据库的用户名密码,若代码中未使用DBUSER和DBPWD则不需要配置

2、GBASEDBTDIR= /home/gbase (csdk的安装路径)

其他可能会用到的环境变量(按需选用)

1、export DBDATE=Y4MD-  设置日期格式

2、设置字符格式

export DB_LOCALE=ZH_CN.UTF8 
export CLIENT_LOCALE=ZH_CN.UTF8 

3、设置编译所需链接库的路径

export LD_LIBRARY_PATH=${GBASEDBTDIR}/lib:${GBASEDBTDIR}/lib/esql:${GBASEDBTDIR}/lib/cli

三、CMakelist配置。

仅介绍在gci的demo目录下增加用例需要修改CMakeList, 如增加用例为test.c

cd /home/gci/demo
vim CMakeList.txt
在CMakeList.txt中增加如下内容
#编译源文件test.c生成可执行文件test
ADD_EXECUTABLE(test  test.c)

# 指定这个可执行文件test需要链接的库
TARGET_LINK_LIBRARIES(test   ${LIB_CLN_NAME})

四、Demo源码分析

提供了一个GCI程序的示例代码,包括数据库登录、执行SQL语句等,并解释了关键代码段的功能。

1、调用接口及流程如下图所示

2、demo示例

#include “gci.h” //gci 接口定义文件

GCIEnv *envhp = NULL; 
GCISvcCtx *svchp = NULL;
GCIError *errhp = NULL;
GCIStmt *stmtp = NULL;

//登陆数据库
int logdb()
{
GCItext *dbname = (GCItext *)”testdb”; //数据库名 根据需要修改(需保证实例中有该数据库)
GCItext *user= (GCItext *)”root”; //用户名 根据需要修改
GCItext *pswd= (GCItext *)”111111”; //密码 根据需要修改
if (GCIEnvCreate(&envhp, GCI_THREADED|GCI_OBJECT,(dvoid *)0,0,0,0,0,(dvoid **)0) != GCI_SUCCESS)
{
printf(“GCIEnvCreate: create env handle failed!\n”);
}
if (GCIHandleAlloc((dvoid *)envhp, (dvoid **)&svchp,GCI_HTYPE_SVCCTX,0,(dvoid **)0) != GCI_SUCCESS)
{
printf(“GCIHandleAlloc: allocate svcctx handle failed!\n”);
}

if (GCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp,GCI_HTYPE_ERROR,0,(dvoid **)0) != GCI_SUCCESS)
{
printf(“GCIHandleAlloc: allocate error handle failed!\n”);
}
//调用登陆接口连接数据库
if (GCILogon(envhp, errhp, &svchp, user, strlen((char *)user), pswd, strlen((char *)pswd), dbname, strlen((char *)dbname) != GCI_SUCCESS)
{
printf(“logon database failed!\n”);
}
}

//执行sql语句
{
GCIText sql[256] = {0};
//分配语句句柄
if (GCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmtp,GCI_HTYPE_STMT,0,(dvoid **)0) != GCI_SUCCESS)
{
printf(“GCIHandleAlloc: allocate stmt handle failed!\n”);
}
//准备sql语句
strcpy((char *)sql, “create table t_table(id int)”);
GCIStmtPrepare(stmtp, errhp, sql, strlen((char *)sql), 0 ,0);
//执行prepare的sql语句
GCIStmtExecute(svchp, stmtp, errhp, 1,0, NULL, NULL, GCI_COMMIT_ON_SUCCESS);
}

五、编译和运行GCI程序

1、设定环境变量

cd /home/gci/demo
source /home/gci/etc/client.ksh

若需要,则设置用户名和密码 export DBUSER DBPWD

2、执行脚本文件clean.sh build_linux_debug_shared.sh 然后执行make 

./clean.sh
./build_linux_debug_shared.sh
make

3、source ids安装目录(如/home/gbase)下的profile文件或者ksh文件(ol_gbasedbt.ksh)

source ol_gbasedbt.ksh

4、执行可执行文件如: ./test

通过本文的详细介绍,您应能全面了解如何在南大通用GBase 8s数据库中使用GCI进行数据库编程。GCI提供了一种高效、灵活的数据库访问方式,能够帮助开发者提升数据库应用的开发效率和性能。我们希望本文能成为您在使用GBase 8s进行数据库开发的得力助手。

原文链接:https://www.gbase.cn/community/post/4319
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值