濮阳杆衣贸易有限公司

主頁 > 知識庫 > Golang中如何對MySQL進行操作詳解

Golang中如何對MySQL進行操作詳解

熱門標簽:廣州呼叫中心外呼系統(tǒng) 學(xué)海導(dǎo)航地圖標注 地圖標注的汽車標 浙江高速公路地圖標注 高德地圖標注口訣 西部云谷一期地圖標注 南通如皋申請開通400電話 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 中國地圖標注省會高清

前言

Golang官方并沒有提供數(shù)據(jù)庫驅(qū)動,但通過database/sql/driver包來提供了實現(xiàn)驅(qū)動的標準接口??梢栽贕ithub上找到很多開源的驅(qū)動。

其中g(shù)o-sql-driver/mysql是一個比較推薦的驅(qū)動,其完全支持database/sql接口。

使用這個驅(qū)動, 在項目里import進:

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

在正式使用database/sql包之前,首先得明白sql.DB并不代表一個數(shù)據(jù)庫連接,它并不會與數(shù)據(jù)庫建立任何連接,也不會驗證參數(shù)的合法性,要想知道DSN的合法性,需使用sql.DB實例(比如db)db.Ping() 方法, 如下:

err = db.Ping()
if err != nil {
 // 錯誤處理
}

使用sql.Open()方法即可獲得一個sql.DB實例。需要注意的是,sql.DB的設(shè)計就是用來作為長連接使用的,不應(yīng)該在項目里頻繁的進行Open()與Close(),提倡的做法是聲明一個全局的sql.DB實例, 將其復(fù)用起來。即只Open()一次,使用直到程序結(jié)束任務(wù)。

拿到sql.DB實例之后,就可以對數(shù)據(jù)庫進行操作了。

在操作數(shù)據(jù)庫時,推薦做法是使用db.Prepare()對SQL語句進行預(yù)編譯,這樣具有較高的安全性,可在一定程度上避免諸如SQL注入這樣的攻擊手段。

一些示例:

/*
 查詢操作
*/
stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `id` = ?")
defer stmt.Close()
if err != nil {
 //錯誤處理
}
var userName string
//Scan() 將結(jié)果復(fù)制到userName
err = stmt.QueryRow(1).Scan(userName)

fmt.Println(userName)

/*
 多行結(jié)果
*/
stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `age` = ?")
defer stmt.Close()
if err != nil {
 //錯誤處理
}

rows, err := stmt.Query(年齡)
if err != nil {
 //錯誤處理
}

for rows.Next() {
 var userName string
 if err := rows.Scan(userName); err != nil {
  //錯誤處理
 }
}
/*
 插入操作
*/
stmt, err := db.Prepare("INSERT INTO `users` (`user_name`, `age`) VALUES(?, ?)")
defer stmt.Close()
if err != nil {
 //錯誤處理
}
stmt.Exec("名字",年齡)
/*
 事務(wù)
*/
tx, err := db.Begin()
if err != nil {
 //錯誤處理
}
defer tx.Rollback()

stmt, err := db.Prepare("")
defer stmt.Close()
if err != nil {
 //錯誤處理
}

stmt.Exec()
err = tx.Commit()
if err != nil {
 //錯誤處理
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Golang通過SSH執(zhí)行交換機操作實現(xiàn)
  • golang中連接mysql數(shù)據(jù)庫
  • Golang操作MySql數(shù)據(jù)庫的完整步驟記錄
  • 如何利用Golang解析讀取Mysql備份文件
  • golang gorm 操作mysql及gorm基本用法
  • golang 通過ssh代理連接mysql的操作

標簽:曲靖 吐魯番 德宏 東營 保定 貴州 許昌 常州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Golang中如何對MySQL進行操作詳解》,本文關(guān)鍵詞  Golang,中,如何,對,MySQL,進行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang中如何對MySQL進行操作詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Golang中如何對MySQL進行操作詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    密山市| 金山区| 元氏县| 永福县| 浪卡子县| 东宁县| 德保县| 金溪县| 都匀市| 江北区| 铜山县| 新闻| 突泉县| 碌曲县| 肇庆市| 威海市| 芜湖县| 化德县| 财经| 嘉定区| 茌平县| 巴青县| 武隆县| 齐河县| 麦盖提县| 江源县| 七台河市| 怀集县| 罗定市| 永德县| 泸定县| 宜丰县| 清原| 天柱县| 惠东县| 盱眙县| 青河县| 武宣县| 阿尔山市| 平南县| 九江市|