在企业级数据库应用开发中,高效访问和操作数据库是提升应用性能的关键。南大通用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.kshcd /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 DBPWD2、执行脚本文件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.ksh4、执行可执行文件如: ./test
图片
通过本文的详细介绍,您应能全面了解如何在南大通用GBase 8s数据库中使用GCI进行数据库编程。GCI提供了一种高效、灵活的数据库访问方式,能够帮助开发者提升数据库应用的开发效率和性能。我们希望本文能成为您在使用GBase 8s进行数据库开发的得力助手。原文链接:https://www.gbase.cn/community/post/4319更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。


读研的抽屉
1 声望0 粉丝