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

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

          Go語言中操作MySQL數據庫的方法

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

          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()//隨手關閉數據庫是個好習慣

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

          數據庫的主要方法有:

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

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

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

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

          創(chuàng)建表

          exec函數如下:

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

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

          其中result包含的內容有:

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

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

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

          增刪改操作

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

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

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