站長資訊網
        最全最豐富的資訊網站

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

        執行數據庫操作。

        數據庫的主要方法有:

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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 无码精品A∨在线观看| 国产精品色内内在线播放| 少妇人妻偷人精品无码视频 | 国产精品一久久香蕉国产线看| 久久成人精品| 91精品国产91久久久久久蜜臀| 国产成人精品电影在线观看| 亚洲精品无码久久千人斩| 久久久久无码精品| 国产精品九九久久精品女同亚洲欧美日韩综合区| 精品国产精品国产偷麻豆| 亚洲AV无码成人精品区狼人影院| 国产区精品福利在线观看精品| 国产精品青草久久久久婷婷| 久久精品亚洲精品国产色婷| 一本一道精品欧美中文字幕| 精品日本一区二区三区在线观看| 91精品免费久久久久久久久| 国产精品美女久久久久网| 国产精品扒开腿做爽爽爽视频| 一本一本久久A久久综合精品| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久久久这里只有精品 | 久久亚洲精品中文字幕三区| 国产AV午夜精品一区二区入口| 老汉精品免费AV在线播放| 亚洲中文字幕久久精品无码APP| 麻豆国产在线精品国偷产拍| 97久久综合精品久久久综合| 国产精品亚洲成在人线| 久久影院综合精品| 久久精品国产清高在天天线| 久久精品水蜜桃av综合天堂| 日韩精品无码一区二区三区不卡| 亚洲精品自在在线观看| 亚洲国产精品无码久久一区二区| 自拍偷自拍亚洲精品第1页| 永久免费精品影视网站| 亚洲精品国产品国语在线| 一本色道久久88—综合亚洲精品| 亚洲国产另类久久久精品黑人|