暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GO语言连接GBase 8a MPP Cluster

原创 灵魂摆渡者 2022-03-30
1091

环境部署:172.16.3.147

安装包位置:/lyt/golanguage

设置环境变量:PATH中加入 /lyt/golanguage/go/bin,并生效环境变量

https://github.com/go-sql-driver/mysql

 

第一个程序

vi hello.go

package main

 

import "fmt"

 

func main(){

        fmt.Println("Hello,world");

}

 

注意:函数后的大括号函数体,不能换行,需要跟函数名同行

 

一、执行第一个程序:

go run hello.go

 

[root@n3117 testgo]# go run hello.go

Hello,world

 

二、gbase数据库连接及操作

 

1、下载mysql的go驱动

https://golang.google.cn/dl/

 

2、部署mysql驱动

unzip mysql-master.zip

mv mysql-master go/src/mysql 目录名字一定是mysql

表结构

CREATE TABLE "t_ftp" (

  "id" int(11) DEFAULT NULL,

  "salary" bigint(20) DEFAULT NULL,

  "year" varchar(4) DEFAULT NULL,

  "name" varchar(100) DEFAULT NULL

)

插入测试数据:

insert into t_ftp values(1,1000,'2018','first');

insert into t_ftp values(2,2000,'2019','second');

insert into t_ftp values(3,3000,'2020','third');

insert into t_ftp values(4,4000,'2021','fouth');

insert into t_ftp values(5,5000,'2022','fifth');

 

编写数据库操作go程序

package main

 

import(

"database/sql"

"fmt"

_"mysql"

)

 

func main(){

fmt.Println("Connect db now...")

db:=conndb("gbase:gbase20110531@tcp(172.16.4.55:5258)/test?charset=utf8")

fmt.Println("Query from test.t_ftp now ...")

query(db)

fmt.Println("Update table test.t_ftp now")

update(db,10)

fmt.Println("select again...")

query(db)

fmt.Println("insert one row now...")

insert(db)

fmt.Println("select again...")

        query(db)

fmt.Println("delete some recorders...")

delete(db,100)

fmt.Println("select again...")

        query(db)

}

 

// connect to database

func conndb(connstr string) *sql.DB{

db,err:=sql.Open("mysql",connstr)

        checkErr(err)

if err != nil {

                fmt.Printf("connect gbase fail ! [%s]", err)

           } else {

                fmt.Println("connect to gbase success")

            }

return db

}

 

// query recorders from db

func query(db *sql.DB){

sqlstr:="select * from t_ftp"

rows,err:=db.Query(sqlstr)

if err != nil {

fmt.Printf("Query fail err:%v\n",err)

return

}

defer rows.Close()

for rows.Next(){

var id string

var salary string

var year string

var name string

err:=rows.Scan(&id,&salary,&year,&name)

if err != nil{

fmt.Printf("Scan failed, err:%v\n",err)

return

}

fmt.Printf("id:%s        salary:%s        year:%s                name:%s\n",id,salary,year,name)

}

 

}

 

//更新记录

func update(db *sql.DB,idcond int){

stmt,err:=db.Prepare("update t_ftp set name=? where id=?")

if err != nil {

                fmt.Printf("Update fail err:%v\n",err)

                return

        }

res,err:=stmt.Exec("Updated",idcond)

checkErr(err)

affect,err:=res.RowsAffected()

checkErr(err)

fmt.Println(affect)

}

 

//插入记录

func insert(db *sql.DB){

stmt,err:=db.Prepare("insert into t_ftp values(?,?,?,?)")

checkErr(err)

res,err:=stmt.Exec("8990","2500","2021","insert...")

checkErr(err)

id,err:=res.LastInsertId()

checkErr(err)

fmt.Println(id)

}

 

//delete记录

func delete(db *sql.DB,idcond int){

        stmt,err:=db.Prepare("delete from t_ftp where id>?")

        checkErr(err)

        res,err:=stmt.Exec(idcond)

        checkErr(err)

affect,err:=res.RowsAffected()

checkErr(err)

        fmt.Println(affect)

}

 

func checkErr(err error){

if err!=nil {

panic(err)

}

}

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论