真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go語言中如何操作MySQL數(shù)據(jù)庫

Go語言是一個開源的編程語言,它能讓構(gòu)造簡單、可靠且高效的軟件變得容易。創(chuàng)新互聯(lián)小編今天就來為大家介紹一下Go語言中如何操作MySQL數(shù)據(jù)庫。

創(chuàng)新互聯(lián)是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護(hù)、成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、網(wǎng)站備案、服務(wù)器租用、域名注冊、軟件開發(fā)、成都小程序開發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運(yùn)營推廣經(jīng)驗的科技公司,有著多年的網(wǎng)站建站經(jīng)驗,致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個面向全國乃至全球的業(yè)務(wù)窗口:建站歡迎咨詢:028-86922220

Go語言操作MySQL數(shù)據(jù)庫:

安裝go操作MySQL的驅(qū)動

go get -u -v github.com/go-sql-driver/mysql

go操作MySQL數(shù)據(jù)庫

導(dǎo)包

import _ "github.com/go-sql-driver/mysql"

程序在操作數(shù)據(jù)庫的時候只需要用到database/sql,而不需要直接使用數(shù)據(jù)庫驅(qū)動,所以程序在導(dǎo)入數(shù)據(jù)庫驅(qū)動的時候?qū)⑦@個包的名字設(shè)置成下劃線。

連接數(shù)據(jù)庫,用sql.Open()方法,open()方法的第一個參數(shù)是驅(qū)動名稱,第二個參數(shù)是連接字符串,格式為:用戶名:密碼@tcp(ip:port)/數(shù)據(jù)庫名稱?編碼方式,返回值是連接對象和錯誤信息,例如:

conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
defer conn.Close()//隨手關(guān)閉數(shù)據(jù)庫是個好習(xí)慣

執(zhí)行數(shù)據(jù)庫操作。

數(shù)據(jù)庫的主要方法有:

Query 執(zhí)行數(shù)據(jù)庫的查詢操作,例如一個Select語句,返回數(shù)據(jù)類型為*Rows

QueryRow 執(zhí)行數(shù)據(jù)庫至多返回一條數(shù)據(jù),返回數(shù)據(jù)類型為*Row

Exec 執(zhí)行數(shù)不返回任何rows的據(jù)庫語句,例如delete操作

PrePare 準(zhǔn)備一個數(shù)據(jù)庫query操作,返回一個*Stmt,用于后續(xù)query或Exec。這個Stmt可以被多次執(zhí)行,或者并發(fā)執(zhí)行

創(chuàng)建表

exec函數(shù)如下:

func (db *DB) Exec(query string, args ...interface{}) (Result, error)

創(chuàng)建表的方法也是Exec(),參數(shù)是SQL語句,返回值是結(jié)果集和錯誤信息.

其中result包含的內(nèi)容有:

type Result interface {
	LastInsertId() (int64, error)
	RowsAffected() (int64, error)
}

RowsAffected() 函數(shù),可以獲得成功執(zhí)行SQL后對數(shù)據(jù)庫所影響的行數(shù)。

res ,err:= conn.Exec("create table user(name VARCHAR(40),pwd VARCHAR(40))")
beego.Info("create table result=",res.,err)

增刪改操作

執(zhí)行增刪改操作語句的是Exec(),參數(shù)是SQL語句,返回值是結(jié)果集和錯誤信息,通過對結(jié)果集的判斷,得到執(zhí)行結(jié)果的信息。以插入數(shù)據(jù)為例代碼如下:

res,_:=stmt.Exec("insert user(name,pwd) values (?,?)","tony","tony")
count,_:=res.RowsAffected()
this.Ctx.WriteString(strconv.Itoa(int(count)))

查詢操作

用的函數(shù)是Query()和QueryRow.

func (db *DB) QueryRow(query string, args ...interface{}) *Row
func (db *DB) Query(query string, args ...interface{}) (*Rows, error)

利用QueryRow實現(xiàn)單行查詢,能確定該SQL語句的查詢結(jié)果為一條記錄。將結(jié)果中的字段值使用Scan()函數(shù)依次提取。

利用Query實現(xiàn)多行數(shù)據(jù)查詢,返回值為查詢結(jié)果集和錯誤信息。通過next和Scan函數(shù)一起將數(shù)據(jù)取出來

代碼如下:

單行查詢:

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)
		}
	}

全部代碼

//連接數(shù)據(jù)庫
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)
//插入數(shù)據(jù)
    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)
		}
	}

關(guān)于Go語言中如何操作MySQL數(shù)據(jù)庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的參考價值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。


當(dāng)前文章:Go語言中如何操作MySQL數(shù)據(jù)庫
文章地址:http://weahome.cn/article/geijoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部