Connecting to GBase 8s Database Using Go on Linux

Cong Li - Sep 18 - - Dev Community

Linux is widely used in server environments due to its stability and security. Go, known for its simplicity and efficiency, has become one of the preferred languages for backend development. Connecting Go to a database can greatly enhance data processing efficiency and performance. This article provides a step-by-step guide on how to connect to the GBase 8s database via ODBC using Go in a Linux environment, from setting up the environment to implementing the code.

1. Environment Setup: Install Go

First, we need to install the Go programming language on the Linux system. Download the latest Go package:

tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz
Enter fullscreen mode Exit fullscreen mode

Add /usr/local/bin to your PATH environment variable so that you can use the go command.

2. Environment Setup: Install go-odbc

You will need to install unixodbc and gcc beforehand. The go-odbc package can be downloaded using git or as an offline package. Download it from: go-odbc on GitHub

After downloading go-odbc-master.zip, extract it and copy it to /usr/local/go/src. It is recommended to rename the folder from go-odbc-master to odbc. Navigate to /usr/local/go/src/odbc and execute make.bash to complete the installation.

3. Configure GBase ODBC

On a Linux system, you need to install unixODBC or iODBC to use the GBase 8s ODBC driver. We recommend using the unixODBC driver manager. The unixODBC package is typically provided along with the GBase 8s ODBC installation. Alternatively, you can download it from the official unixODBC website.

First, navigate to the system disk directory, for example:

/media/RHEL-6.6 Server.x86_64/Packages
Enter fullscreen mode Exit fullscreen mode

Install the following packages:

  • unixODBC-2.2.14-1.x86_64.rpm: The data source manager for unixODBC
  • unixODBC-devel-2.2.14-1.x86_64.rpm: Development package for unixODBC

Image description

After successful installation, you can verify the unixODBC installation with the following command:

Image description

ODBC Configuration Files

vi /etc/odbcinst.ini
#GBase
[GBase]
Description     = ODBC for GBase
Driver          = /opt/gbase/lib/cli/iclit09b.so
Setup           = /opt/gbase/lib/cli/iclit09b.so
Driver64        = /opt/gbase/lib/cli/iclit09b.so
Setup64         = /opt/gbase/lib/cli/iclit09b.so
FileUsage       = 1

vi /etc/odbc.ini 
[test]
Driver  =/opt/gbase/lib/cli/iclit09b.so
SERVER  =gbaseserver2
UID     =gbasedbt
PWD     =gbasedbt
DATABASE        =db_utf8
PORT    =9488
CHARSET =UTF8
[ODBC]
;uncomment the below line for UNICODE connection
UNICODE=UCS-2
Enter fullscreen mode Exit fullscreen mode

Now that the ODBC configuration is complete, you can use isql to verify whether ODBC has been configured successfully.

Set Environment Variables

export LD_LIBRARY_PATH=${GBASEDBTDIR}/lib:${GBASEDBTDIR}/lib/esql:${GBASEDBTDIR}/lib/cli
Enter fullscreen mode Exit fullscreen mode

Verify GBase ODBC Configuration

To verify the ODBC configuration, use isql:

Image description

4. Code Test

Set the ODBCINI environment variable for the user running the Go program.

Example Go code to connect to the GBase 8s database:

package main

import (
    "fmt"
    "odbc"
)

func main() {
    fmt.Printf("%s\n", "Creating database connection")
    conn, _ := odbc.Connect("DSN=gbase14;UID=gbasedbt;PWD=gbasedbt")
    fmt.Printf("%s\n", "Connection successful")

    stmt1, _ := conn.ExecDirect("create table if not exists test(a int,b char(10))")
    stmt1.Execute()

    stmt2, _ := conn.ExecDirect("insert into test values(1,'Hello')")
    stmt2.Execute()

    stmt3, _ := conn.Prepare("select * from test")
    stmt3.Execute()

    rows, err := stmt3.FetchAll()
    for i, row := range rows {
        println(i, row.GetInt(0), row.GetString(1))
    }

    if err != nil {
        fmt.Println(err)
        return
    }

    stmt1.Close()
    stmt2.Close()
    stmt3.Close()
    conn.Close()

    return
}
Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player