环境部署: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驱动
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)
}
}




