中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中如何操作MySQL數據庫

發布時間:2020-04-27 10:26:09 來源:億速云 閱讀:789 作者:小新 欄目:編程語言

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數據庫就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北川| 新建县| 齐齐哈尔市| 岚皋县| 资阳市| 长宁县| 随州市| 元氏县| 汽车| 固镇县| 隆子县| 扎鲁特旗| 建水县| 宜兴市| 崇阳县| 垫江县| 航空| 松江区| 湖州市| 龙游县| 江都市| 浦城县| 北安市| 于都县| 柳林县| 宜川县| 巫山县| 政和县| 和政县| 临桂县| 牡丹江市| 同心县| 西林县| 桐城市| 怀来县| 泸州市| 通榆县| 武安市| 太康县| 黑龙江省| 曲水县|