欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Go語言中操作MySQL數(shù)據(jù)庫的方法

          Go語言是一個(gè)開源的編程語言,它能讓構(gòu)造簡單、可靠且高效的軟件變得容易。go語言教程欄目就來為大家介紹一下go語言中操作MySQL數(shù)據(jù)庫的方法。

          Go語言中操作MySQL數(shù)據(jù)庫的方法

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

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

          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ù)庫的時(shí)候只需要用到database/sql,而不需要直接使用數(shù)據(jù)庫驅(qū)動(dòng),所以程序在導(dǎo)入數(shù)據(jù)庫驅(qū)動(dòng)的時(shí)候?qū)⑦@個(gè)包的名字設(shè)置成下劃線。

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

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

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

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

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

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

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

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

          創(chuàng)建表

          exec函數(shù)如下:

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

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

          其中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é)果集和錯(cuò)誤信息,通過對結(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實(shí)現(xiàn)單行查詢,能確定該SQL語句的查詢結(jié)果為一條記錄。將結(jié)果中的字段值使用Scan()函數(shù)依次提取。

          利用Query實(shí)現(xiàn)多行數(shù)據(jù)查詢,返回值為查詢結(jié)果集和錯(cuò)誤信息。通過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) 		} 	}

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號