GBase新闻

专注于数据库软件产品和服务,致力于成为用户最信赖的数据库产品供应商

南大通用GBase 8s数据库GCI编程接口使用指南

发布时间:2025-02-28

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

01 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 (实例名)

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

1、export DBUSER=gbasedbt export DBPWD=Big4ifmx

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

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

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

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

2、设置字符格式

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

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

03 CMakelist配置

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

cd /home/gci/demovim CMakeList.txt在CMakeList.txt中增加如下内容#编译源文件test.c生成可执行文件testADD_EXECUTABLE(test test.c)# 指定这个可执行文件test需要链接的库TARGET_LINK_LIBRARIES(test ${LIB_CLN_NAME})

04 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);}

05 编译和运行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.shmake

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

source ol_gbasedbt.ksh

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

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