Go 语言连接 GBase8c

测试环境:
操作系统:centos7.9
CPU架构:x86
Go 语言包:go1.22.3.linux-amd64.tar.gz

1、解压go包并配置
[gbase@gbase8c_tool go_templates]$ tar -zxf go1.22.3.linux-amd64.tar.gz

image.png
创建Go_item 目录用于存放后续go测试项目

mkdir /data/go_templates/go_item

image.png
配置环境变量,修改~/.bashrc 文件,写入以下内容

# Go
export GOROOT=/data/go_templates/go
export GOPATH=/data/go_templates/go_item
export PATH=$GOROOT/bin:$GOPATH:$PATH

保存退出
image.png

2、创建item项目

创建项目目录,根据上面配置的项目路径创建,并生成配置文件

mkdir -p /data/go_templates/go_item/src
# 创建test 项目
go mod init test

image.png
下载驱动

#查看goproxy,需要从goproxy下载驱动
go env |grep GOPROXY

# 设置goproxy
go env -w GOPROXY=https://goproxy.cn,direct

# 进入到src目录下
cd /data/go_templates/go_item/src/

# go 拉取驱动
go get github.com/lib/pq

执行拉取驱动后,将驱动安装在/data/go_templates/go_item/pkg/mod目录下,生成github.com驱动目录

(非联网的情况下可以在有网的机器上使用go下载之后,把整个pkg目录拷贝到离线机器的对应目录下,或者直接下载pq放在对应的路径下)

3、Go 测试连接

进入项目目录,编写go测试代码

cd /data/go_templates/go_item/src/
vim test.go

image.png

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/lib/pq"
)

var db *sql.DB

func sqlOpen() {
    var err error
    db, err = sql.Open("postgres", "host=192.168.123.111 port=15400 user=gbase8c password=Database@123 dbname=gbase sslmode=disable")
    checkErr(err)
}
func sqlInsert() {
    //插入数据
    stmt, err := db.Prepare("INSERT INTO go_test(id,name,d_data) VALUES($1,$2,$3)")
    checkErr(err)

    res, err := stmt.Exec("6666","go","2022-05-25")

    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println("rows affect:", affect)
}
func sqlDelete() {
    //删除数据
    stmt, err := db.Prepare("delete from go_test where id=$1")
    checkErr(err)

    res, err := stmt.Exec(1003)
    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println("rows affect:", affect)
}
func sqlSelect() {
    //查询数据
    rows, err := db.Query("SELECT * FROM go_test")
    checkErr(err)

    println("-----------")
    for rows.Next() {
        var id int
        var name string
        var d_data string
        err = rows.Scan(&id, &name,  &d_data)
        checkErr(err)
        fmt.Println("id = ", id, "\nname = ", name, "\nd_data = ", d_data, "\n-----------")
    }
}
func sqlUpdate() {
    //更新数据
    stmt, err := db.Prepare("update go_test set name=$1 where id=$2")
    checkErr(err)

    res, err := stmt.Exec("php", 1002)
    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println("rows affect:", affect)
}
func sqlClose() {
    db.Close()
}
func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}

func sqlTest() {

    sep := "----------\n"
    println(sep, "连接")
    sqlOpen()


    println(sep, "查询结果,id=1001,1002,1003 三行数据") 
    sqlSelect()

    println(sep, "插入id=6666行") 
    sqlInsert()
    sqlSelect()

    println(sep, "更新id=1002行,name值更新为php") 
    sqlUpdate()
    sqlSelect()

    println(sep, "删除id=1003行的数据") 
    sqlDelete()
    sqlSelect()

    println(sep, "关闭连接") 
    sqlClose()

}

func main() {

    sqlTest()
}

登录数据库创建测试表
create table go_test(id int,name text,d_data timestamp);
insert into go_test values (1001,'java','2022-05-22');
insert into go_test values (1002,'python','2022-05-23');
insert into go_test values (1003,'perl','2022-05-24');

image.png
执行代码测试
image.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值