這兩天用golang 寫的服務端做的都是和redis做互動,因為後期還會用mysql的一個表做驗證。 先學習下golang對mysql的操作 !
mymysql和go-mysql-driver是兩個現在都很流行的go的mysql驅動,看了下文檔,後者比較的健全,聽大牛們介紹,貌似go-mysql-driver更加的健全。
安裝配置還是那麼簡單,直接go get就可以了
go get github.com/go-sql-driver/mysql
好了,咱們就開始用go-sql-driver增删改查
先用go-sql-driver連結mysql !!!
一看就懂了,帳号:密碼@模式 資料庫,以及附帶的參數
[email protected](/path/to/socket)/dbname
root:[email protected](/tmp/mysql.sock)/myDatabase?loc=Local
user:passwor[email protected](localhost:5555)/dbname?tls=skip-verify&autocommit=true
完整的例子!
//xiaorui.cc
#xiaorui.cc
package main
import (
"database/sql" //這包一定要引用,是底層的sql驅動
"fmt"
_ "github.com/go-sql-driver/mysql"
"strconv" //這個是為了把int轉換為string
)
func main() { //main函數
db, err := sql.Open("mysql", "root:@tcp(localhost:3306)/dbname?charset=utf8")
//資料庫連接配接字元串,别告訴我看不懂。端口一定要寫/
if err != nil { //連接配接成功 err一定是nil否則就是報錯
panic(err.Error()) //抛出異常
fmt.Println(err.Error())//僅僅是顯示異常
}
defer db.Close() //隻有在前面用了 panic 這時defer才能起作用,如果連結資料的時候出問題,他會往err寫資料
rows, err := db.Query("select id,lvs from xiaorui")
//判斷err是否有錯誤的資料,有err資料就顯示panic的資料
if err != nil {
panic(err.Error())
fmt.Println(err.Error())
return
}
defer rows.Close()
var id int //定義一個id 變量
var lvs string //定義lvs 變量
for rows.Next() { //開始循環
rerr := rows.Scan(&id, &lvs) //資料指針,會把得到的資料,往剛才id 和 lvs引入
if rerr == nil {
fmt.Println("id号是",strconv.Itoa(id) + " lvs lvs是"+ lvs) //輸出來而已,看看
}
}
insert_sql := "INSERT INTO xiaorui(lvs) VALUES(?)"
_, e4 := db.Exec(insert_sql,"nima")
fmt.Println(e4)
db.Close() //關閉資料庫
}
wKioL1MxLCWy7L-qAAIYdscA1JM573.jpg
©著作權歸作者所有:來自51CTO部落格作者rfyiamcool的原創作品,謝絕轉載,否則将追究法律責任
go go-sql-drivergo mysqlgo 資料庫Golang