GBase 8s GCI Usage Guide

In enterprise-level database application development, efficient access to and operation of the database is key to enhancing application performance. The GBase 8s database system offers the GCI (GBase Client Interface), a programming interface that allo…


This content originally appeared on DEV Community and was authored by Cong Li

In enterprise-level database application development, efficient access to and operation of the database is key to enhancing application performance. The GBase 8s database system offers the GCI (GBase Client Interface), a programming interface that allows developers to conveniently access and manipulate the database using the C language. This article provides a detailed guide on how to use GCI, including environment setup, program compilation, and how to run GCI programs, to help developers quickly master client-side development for the GBase database.

1. Introduction to IDS and GCI Installation Locations

  • Install IDS and CSDK (assuming they are installed together) at a location like /home/gbase.

  • Extract the GCI package (the location is not critical), for example, /home/gci.

  • Go to the etc directory and modify the client.ksh file:

cd /home/gci/etc
vim client.ksh

Make the following changes:

GCICLIENTDIR=/home/gci  # Path to GCI

GBASEDBTCSDK=/home/gbase # Path to CSDK

GBASEDBTSERVER=ol_gbasedbt # Instance name

2. Environment Variables and Their Meanings for Compiling GCI Programs

1) Set the database connection username and password:

   export DBUSER=gbasedbt 
   export DBPWD=Big4ifmx

(If DBUSER and DBPWD are not used in the code, these do not need to be configured.)

2) Set the installation path of CSDK:

   export GBASEDBTDIR=/home/gbase

Additional Environment Variables (Optional)

1) Set the date format:

   export DBDATE=Y4MD-

2) Set character encoding:

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

3) Set the paths for the libraries needed for compilation:

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

3. CMakeList Configuration

To add a new example in the demo directory under GCI, the CMakeList needs to be modified. For example, to add a case named test.c:

cd /home/gci/demo
vim CMakeList.txt

Add the following content to CMakeList.txt:

# Compile the source file test.c to generate the executable test
ADD_EXECUTABLE(test  test.c)

# Specify the libraries that the executable test needs to link
TARGET_LINK_LIBRARIES(test   ${LIB_CLN_NAME})

4. Demo Source Code Analysis

A sample GCI program code is provided, which includes logging into the database, executing SQL statements, etc., with explanations of the key code segments.

1) Interface Calls and Process Flow

Image description

2) Demo Example

#include "gci.h" // GCI interface definition file

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

// Log into the database
int logdb()
{
    GCItext *dbname = (GCItext *)"testdb"; // Database name, modify as needed (ensure the database exists in the instance)
    GCItext *user = (GCItext *)"root"; // Username, modify as needed
    GCItext *pswd = (GCItext *)"111111"; // Password, modify as needed

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

    // Call the login interface to connect to the database
    if (GCILogon(envhp, errhp, &svchp, user, strlen((char *)user), pswd, strlen((char *)pswd), dbname, strlen((char *)dbname)) != GCI_SUCCESS)
    {
        printf("logon database failed!\n");
    }
}

// Execute SQL statements
{
    GCIText sql[256] = {0};

    // Allocate statement handle
    if (GCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmtp, GCI_HTYPE_STMT, 0, (dvoid **)0) != GCI_SUCCESS)
    {
        printf("GCIHandleAlloc: allocate stmt handle failed!\n");
    }

    // Prepare SQL statement
    strcpy((char *)sql, "create table t_table(id int)");
    GCIStmtPrepare(stmtp, errhp, sql, strlen((char *)sql), 0, 0);

    // Execute the prepared SQL statement
    GCIStmtExecute(svchp, stmtp, errhp, 1, 0, NULL, NULL, GCI_COMMIT_ON_SUCCESS);
}

5. Compiling and Running the GCI Program

1) Set the environment variables:

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

If needed, set the username and password:

   export DBUSER 
   export DBPWD

2) Run the script files clean.sh and build_linux_debug_shared.sh, then execute make:

   ./clean.sh
   ./build_linux_debug_shared.sh
   make

Image description

3) Source the profile or ksh file from the IDS installation directory (e.g., /home/gbase):

   source ol_gbasedbt.ksh

4) Run the executable, e.g., ./test:

Image description

Through this detailed guide, you should now have a comprehensive understanding of how to use GCI for database programming in the GBase 8s database. GCI provides an efficient and flexible way to access the database, helping developers enhance the development efficiency and performance of database applications. We hope this article will serve as a valuable resource in your GBase 8s database development.


This content originally appeared on DEV Community and was authored by Cong Li


Print Share Comment Cite Upload Translate Updates
APA

Cong Li | Sciencx (2024-08-20T13:58:59+00:00) GBase 8s GCI Usage Guide. Retrieved from https://www.scien.cx/2024/08/20/gbase-8s-gci-usage-guide/

MLA
" » GBase 8s GCI Usage Guide." Cong Li | Sciencx - Tuesday August 20, 2024, https://www.scien.cx/2024/08/20/gbase-8s-gci-usage-guide/
HARVARD
Cong Li | Sciencx Tuesday August 20, 2024 » GBase 8s GCI Usage Guide., viewed ,<https://www.scien.cx/2024/08/20/gbase-8s-gci-usage-guide/>
VANCOUVER
Cong Li | Sciencx - » GBase 8s GCI Usage Guide. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/08/20/gbase-8s-gci-usage-guide/
CHICAGO
" » GBase 8s GCI Usage Guide." Cong Li | Sciencx - Accessed . https://www.scien.cx/2024/08/20/gbase-8s-gci-usage-guide/
IEEE
" » GBase 8s GCI Usage Guide." Cong Li | Sciencx [Online]. Available: https://www.scien.cx/2024/08/20/gbase-8s-gci-usage-guide/. [Accessed: ]
rf:citation
» GBase 8s GCI Usage Guide | Cong Li | Sciencx | https://www.scien.cx/2024/08/20/gbase-8s-gci-usage-guide/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.