当今Linux系统因其稳定性和安全性,被广泛应用于服务器端。Go语言,以其简洁、高效而著称,成为后端开发的首选语言之一。将Go语言与数据库连接起来,可以极大地提升数据处理的效率和性能。本文将详细介绍如何在Linux环境下使用Go语言通过ODBC连接到GBase 8s数据库,从环境搭建到代码实现,一步步带你走进数据库连接的世界。

1、环境准备:安装GO环境

首先,我们需要在Linux系统上安装Go语言环境。下载go lang最新开发包,

解压 tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz ;将/usr/local/bin添加到环境变量path中,这样我们就可以使用go命令了。

2、环境准备:安装go-odbc

需提前安装好unixodbc、gcc。go-odbc下载可以使用git方式或离线包的方式。下载地址:https://github.com/weigj/go-odbc

解压下载的go-odbc-master.zip后,拷贝到/usr/local/go/src下,建议将默认路径名字go-odbc-master改成odbc。进入/usr/local/go/src/odbc下执行make.bash完成安装。

3、配置GBase ODBC

linux 操作系统下需要安装unixODBC 或iODBC 来使用GBase 8s ODBC 驱动。推荐使用unixODBC 驱动管理器。unixODBC 的安装包一般与GBase 8s ODBC 的安装一同提供。您可以到unixODBC 官方网站下载。

首先进入系统盘目录,例如"/media/RHEL-6.6 Server.x86_64/Packages",安装下面这两个安装包。

  1. unixODBC-2.2.14-1.x86_64.rpm:unixODBC的数据源管理器
  2. unixODBC-devel-2.2.14-1.x86_64.rpm:unixODBC的开发包

Linux下GO语言连接南大通用GBase 8s数据库_bc

 

安装成功后您可以通过如下命令查看unixODBC 的安装信息:

Linux下GO语言连接南大通用GBase 8s数据库_bc_02

ODBC配置文件

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

到此Linux下GBase ODBC已经配置完成,我们可以通过isql来验证ODBC是否配置成功。

设置环境变量

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

验证GBase ODBC配置

我们通过isql来验证ODBC是否配置成功。如下图。

Linux下GO语言连接南大通用GBase 8s数据库_bc_03

4、代码测试

给执行go程序的用户设置ODBCINI环境变量

package main

import (
	"fmt"
	"odbc"
)

func main() {
	fmt.Printf("%s\n", "创建数据库链接")
	conn, _ := odbc.Connect("DSN=gbase14;UID=gbasedbt;PWD=gbasedbt")
	fmt.Printf("%s\n", "连接成功")
	stmt1, _ := conn.ExecDirect("create table if not exists test(a int,b char(10))")
	stmt1.Execute()
	stmt2, _ := conn.ExecDirect("insert into test values(1,'你好')")
	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
	}
	//stmt.Close()
	stmt1.Close()
	stmt2.Close()
	stmt3.Close()
	conn.Close()

	return
}

5、附录

通过本文的介绍,你已经了解了如何在Linux环境下使用Go语言通过ODBC连接到GBase 8s数据库。这个过程不仅涉及到环境的搭建和配置,还包括了代码的编写和测试。希望这篇文章能够帮助你更好地理解和掌握数据库连接的相关知识,为项目开发提供支持。