久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    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ù)庫名稱?編碼方式,返回值是連接對(duì)象和錯(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后對(duì)數(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ò)誤信息,通過對(duì)結(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號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)