您好,登錄后才能下訂單哦!
Go語言是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟件變得容易。億速云小編今天就來為大家介紹一下Go語言中如何操作MySQL數據庫。
Go語言操作MySQL數據庫:
安裝go操作MySQL的驅動
go get -u -v github.com/go-sql-driver/mysql
go操作MySQL數據庫
導包
import _ "github.com/go-sql-driver/mysql"
程序在操作數據庫的時候只需要用到database/sql,而不需要直接使用數據庫驅動,所以程序在導入數據庫驅動的時候將這個包的名字設置成下劃線。
連接數據庫,用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()//隨手關閉數據庫是個好習慣
執行數據庫操作。
數據庫的主要方法有:
Query 執行數據庫的查詢操作,例如一個Select語句,返回數據類型為*Rows
QueryRow 執行數據庫至多返回一條數據,返回數據類型為*Row
Exec 執行數不返回任何rows的據庫語句,例如delete操作
PrePare 準備一個數據庫query操作,返回一個*Stmt,用于后續query或Exec。這個Stmt可以被多次執行,或者并發執行
創建表
exec函數如下:
func (db *DB) Exec(query string, args ...interface{}) (Result, error)
創建表的方法也是Exec(),參數是SQL語句,返回值是結果集和錯誤信息.
其中result包含的內容有:
type Result interface { LastInsertId() (int64, error) RowsAffected() (int64, error) }
RowsAffected() 函數,可以獲得成功執行SQL后對數據庫所影響的行數。
res ,err:= conn.Exec("create table user(name VARCHAR(40),pwd VARCHAR(40))") beego.Info("create table result=",res.,err)
增刪改操作
執行增刪改操作語句的是Exec(),參數是SQL語句,返回值是結果集和錯誤信息,通過對結果集的判斷,得到執行結果的信息。以插入數據為例代碼如下:
res,_:=stmt.Exec("insert user(name,pwd) values (?,?)","tony","tony") count,_:=res.RowsAffected() this.Ctx.WriteString(strconv.Itoa(int(count)))
查詢操作
用的函數是Query()和QueryRow.
func (db *DB) QueryRow(query string, args ...interface{}) *Row func (db *DB) Query(query string, args ...interface{}) (*Rows, error)
利用QueryRow實現單行查詢,能確定該SQL語句的查詢結果為一條記錄。將結果中的字段值使用Scan()函數依次提取。
利用Query實現多行數據查詢,返回值為查詢結果集和錯誤信息。通過next和Scan函數一起將數據取出來
代碼如下:
單行查詢:
row:= conn.QueryRow(`select * from user where userName = "wyj"`) var name,pwd string row.Scan(&name,&pwd) beego.Info(name,"------",pwd)
多行查詢:
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)/testtest?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) //單行查詢 row:= conn.QueryRow(`select * from user where userName = "wyj"`) var name,pwd string row.Scan(&name,&pwd) beego.Info(name,"------",pwd) //多行查詢 data ,err :=conn.Query("SELECT userName from user") var userName string if err == nil{ for data.Next(){ data.Scan(&userName) beego.Error(userName) } }
關于Go語言中如何操作MySQL數據庫就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。