|版權聲明:本文爲博主原創文章,未經博主允許不得轉載。博客地址:https://blog.csdn.net/sgsgy5
2.8Go操作MySQL數據庫(簡單方法)
-
安裝go操作MySQL的驅動
go get -u -v github.com/go-sql-driver/mysql
-
go簡單操作MySQL數據庫
-
導包
import "github.com/go-sql-driver/mysql"
-
連接數據庫,用sql.Open()方法,open()方法的第一個參數是驅動名稱,第二個參數是用戶名:密碼@tcp(ip:port)/數據庫名稱?編碼方式,返回值是連接對象和錯誤信息,例如:
conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8") defer conn.Close()//隨手關閉數據庫是個好習慣
-
執行數據庫操作,這一步分爲兩種情況,一種是增刪改,一種是查詢,因爲增刪改不返回數據,只返回執行結果,查詢要返回數據,所以這兩塊的操作函數不一樣。
創建表
創建表的方法也是Exec(),參數是SQL語句,返回值是結果集和錯誤信息:
res ,err:= conn.Exec("create table user(name VARCHAR(40),pwd VARCHAR(40))") beego.Info("create table result=",res,err)
增刪改操作
執行增刪改操作語句的是Exec(),參數是SQL語句,返回值是結果集和錯誤信息,通過對結果集的判斷,得到執行結果的信息。以插入數據爲例代碼如下:
res,_:=conn.Exec("insert into user(name,pwd) values (?,?)","tony","tony") count,_:=res.RowsAffected() this.Ctx.WriteString(strconv.Itoa(int(count)))
查詢操作
用的函數是Query(),參數是SQL語句,返回值是查詢結果集和錯誤信息,然後循環結果集取出其中的數據。代碼如下:
data ,err :=conn.Query("SELECT name from user") var userName string if err == nil{ for data.Next(){ data.Scan(&userName) beego.Info(userName) } }
全部代碼
//連接數據庫 conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8") if err != nil{ beego.Info("鏈接失敗") } defer conn.Close() //建表 res ,err:= conn.Exec("create table user(userName VARCHAR(40),passwd VARCHAR(40))") beego.Info("create table result=",res,err) //插入數據 res,err =conn.Exec("insert user(userName,passwd) values(?,?)","itcast","heima") beego.Info(res,err) //查詢數據 data ,err :=conn.Query("SELECT userName from user") var userName string if err == nil{ for data.Next(){ data.Scan(&userName) beego.Error(userName) } }
-