最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年03月10日 09:00:22   作者:燈風罩戟  
這篇文章主要給大家介紹了關于在Golang中如何對MySQL進行操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Golang具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

Golang官方并沒有提供數據庫驅動,但通過database/sql/driver包來提供了實現驅動的標準接口。可以在Github上找到很多開源的驅動。

其中go-sql-driver/mysql是一個比較推薦的驅動,其完全支持database/sql接口。

使用這個驅動, 在項目里import進:

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

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

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

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

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

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

一些示例:

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

fmt.Println(userName)

/*
 多行結果
*/
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("名字",年齡)
/*
 事務
*/
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 {
 //錯誤處理
}

總結

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

相關文章

  • golang中defer的基本使用教程

    golang中defer的基本使用教程

    go語言中defer可以完成延遲功能,當前函數執(zhí)行完成后再執(zhí)行defer的代碼塊,下面這篇文章主要給大家介紹了關于golang中defer基本使用的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Go語言錯誤處理異常捕獲+異常拋出

    Go語言錯誤處理異常捕獲+異常拋出

    這篇文章主要介紹了Go語言錯誤處理異常捕獲和異常拋出,Go語言的作者認為java等語言的錯誤處理底層實現較為復雜,就實現了函數可以返回錯誤類型以及簡單的異常捕獲,雖然簡單但是也非常精妙,大大的提高了運行效率,下文需要的朋友可以參考一下
    2022-02-02
  • 使用Go和Gorm實現讀取SQLCipher加密數據庫

    使用Go和Gorm實現讀取SQLCipher加密數據庫

    本文檔主要描述通過Go和Gorm實現生成和讀取SQLCipher加密數據庫以及其中踩的一些坑,文章通過代碼示例講解的非常詳細, 對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • Golang中int類型和字符串類型相互轉換的實現方法

    Golang中int類型和字符串類型相互轉換的實現方法

    在日常開發(fā)中,經常需要將數字轉換為字符串或者將字符串轉換為數字,在 Golang 中,有一些很簡便的方法可以實現這個功能,接下來就詳細講解一下如何實現 int 類型和字符串類型之間的互相轉換,需要的朋友可以參考下
    2023-09-09
  • 一文詳解Go語言切片是如何擴容的

    一文詳解Go語言切片是如何擴容的

    切片是一個擁有相同類型元素的可變長度的序列,它是基于數組類型做的一層封裝。它非常靈活,支持自動擴容。所以本文就來看看Go語言切片是如何擴容的吧
    2023-04-04
  • golang使用map支持高并發(fā)的方法(1000萬次操作14ms)

    golang使用map支持高并發(fā)的方法(1000萬次操作14ms)

    這篇文章主要介紹了golang使用map支持高并發(fā)的方法(1000萬次操作14ms),本文給大家詳細講解,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • golang中range在slice和map遍歷中的注意事項

    golang中range在slice和map遍歷中的注意事項

    今天小編就為大家分享一篇關于golang中range在slice和map遍歷中的注意事項,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Golang泛型的使用方法詳解

    Golang泛型的使用方法詳解

    這篇文章主要介紹了Golang中泛型的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Golang開發(fā)gRPC服務入門介紹

    Golang開發(fā)gRPC服務入門介紹

    這篇文章主要介紹了Golang開發(fā)gRPC服務,Golang開發(fā)gRPC應用程序的套路也已經很清晰,這篇文章就來做一個簡單的介紹,算是入門,需要的朋友可以參考下
    2022-04-04
  • 讓GPT教你用go語言和C語言開發(fā)IDE配置學習

    讓GPT教你用go語言和C語言開發(fā)IDE配置學習

    這篇文章主要介紹了讓GPT教你用go語言和C語言開發(fā)IDE配置學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論

厦门市| 益阳市| 平和县| 象州县| 二手房| 吴堡县| 唐河县| 宜良县| 兴化市| 万州区| 肃北| 田阳县| 甘泉县| 嘉兴市| 陆川县| 海林市| 无棣县| 垫江县| 乃东县| 收藏| 乳山市| 江门市| 靖安县| 罗甸县| 乌拉特中旗| 永兴县| 秦安县| 饶阳县| 南宁市| 二连浩特市| 新密市| 民权县| 红安县| 赤壁市| 合肥市| 麟游县| 华安县| 旺苍县| 棋牌| 延安市| 龙里县|