[Go][MySQL]使用方法

小黑-avatar-img
發佈於後端 個房間
更新 發佈閱讀 11 分鐘

下載驅動

go get -u github.com/go-sql-driver/mysql


連接資料庫

package main

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

var db *sql.DB

//定義一個初始化資料庫的函數
func initDB() (err error) {
//連接資料庫
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
//檢查連線
err = db.Ping()
if err != nil {
return err
}
return nil
}

func main() {
err := initDB() //初始化資料庫
if err != nil {
fmt.Printf("init db failed,err:%v\n", err)
return
}
}


最大連線數

package main

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

func main() {
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
defer db.Close()
db.DB().SetMaxOpenConns(100)
}


最大閒置連線數

package main

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

func main() {
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
defer db.Close()
db.DB().SetMaxIdleConns(10)
}


查詢

package main

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

var db *sql.DB

type User struct {
Uid int
Name string
Phone string
}

//定義一個全域變數
var u User

func queryRow() {
//非常重要:確保QueryRow之後調用Scan方法,否則持有的資料庫連結不會被釋放
err := db.QueryRow("select uid,name,phone from `user` where uid=?", 1).Scan(&u.Uid, &u.Name, &u.Phone)
if err != nil {
fmt.Printf("scan failed, err:%v\n", err)
return
}
fmt.Printf("uid:%d name:%s phone:%s\n", u.Uid, u.Name, u.Phone)
}

func main() {
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
queryRow()
}


查詢多條資料

package main

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

var db *sql.DB

type User struct {
Uid int
Name string
Phone string
}

//定義一個全域變數
var u User

func queryMultiRow() {
rows, err := db.Query("select uid,name,phone from `user` where uid > ?", 0)
if err != nil {
fmt.Printf("query failed, err:%v\n", err)
return
}
//關閉rows釋放持有的資料庫鏈接
defer rows.Close()
//循環讀取結果集中的數據
for rows.Next() {
err := rows.Scan(&u.Uid, &u.Name, &u.Phone)
if err != nil {
fmt.Printf("scan failed, err:%v\n", err)
return
}
fmt.Printf("uid:%d name:%s phone:%s\n", u.Uid, u.Name, u.Phone)
}
}

func main() {
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
queryMultiRow()
}


插入

package main

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

var db *sql.DB

type User struct {
Uid int
Name string
Phone string
}

//定義一個全域變數
var u User

func insertRow() {
ret, err := db.Exec("insert into user(username,phone) values (?,?)", "王五", 13988557766)
if err != nil {
fmt.Printf("insert failed, err:%v\n", err)
return
}
uid, err := ret.LastInsertId() //取得新插入資料的uid
if err != nil {
fmt.Printf("get lastinsert ID failed, err:%v\n", err)
return
}
fmt.Printf("insert success, the id is %d.\n", uid)
}

func main() {
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
insertRow()
}


更新

package main

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

var db *sql.DB

type User struct {
Uid int
Name string
Phone string
}

//定義一個全域變數
var u User

func updateRow() {
ret, err := db.Exec("update user set username=? where uid = ?", "张三", 3)
if err != nil {
fmt.Printf("update failed, err:%v\n", err)
return
}
n, err := ret.RowsAffected() //操作影響的行數
if err != nil {
fmt.Printf("get RowsAffected failed, err:%v\n", err)
return
}
fmt.Printf("update success, affected rows:%d\n", n)
}

func main() {
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
updateRow()
}


刪除

package main

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

var db *sql.DB

type User struct {
Uid int
Name string
Phone string
}

//定義一個全域變數
var u User

//刪除數據
func deleteRow() {
ret, err := db.Exec("delete from user where uid = ?", 2)
if err != nil {
fmt.Printf("delete failed, err:%v\n", err)
return
}
n, err := ret.RowsAffected() //操作影響的行數
if err != nil {
fmt.Printf("get RowsAffected failed, err:%v\n", err)
return
}
fmt.Printf("delete success, affected rows:%d\n", n)
}

func main() {
db, err = sql.Open("mysql", "root:root1234@tcp(127.0.0.1:3306)/hello")
if err != nil {
return err
}
deleteRow()
}






留言
avatar-img
留言分享你的想法!
avatar-img
小黑與程式的邂逅
8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
2024/06/05
GOB Go官方有提供net/rpc的RPC套件。此套件提供GOB的編/解碼,且支援TCP或HTTP傳輸方式。它可以在伺服器端註冊多個不同類型物件。 遠端存取的要求條件 方法的類型可輸出 方法的本體可輸出 方法必須要有兩個參數是輸出或內建 方法的第二個參數是指標型 方法的返回類型為
Thumbnail
2024/06/05
GOB Go官方有提供net/rpc的RPC套件。此套件提供GOB的編/解碼,且支援TCP或HTTP傳輸方式。它可以在伺服器端註冊多個不同類型物件。 遠端存取的要求條件 方法的類型可輸出 方法的本體可輸出 方法必須要有兩個參數是輸出或內建 方法的第二個參數是指標型 方法的返回類型為
Thumbnail
2024/06/04
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
2024/06/04
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
2024/06/03
Gorm是一款性能極好的ORM,且友善,因此可以明顯的提高開發效率。 特點 全功能ORM 支持連結 支援Hook 支持預先載入 支援交易 支持復合主鍵 支持SQL生成器 支援資料庫自動遷移 支援自訂日誌 可擴充性 所有功能都被測試覆蓋 安裝 go get -u gor
Thumbnail
2024/06/03
Gorm是一款性能極好的ORM,且友善,因此可以明顯的提高開發效率。 特點 全功能ORM 支持連結 支援Hook 支持預先載入 支援交易 支持復合主鍵 支持SQL生成器 支援資料庫自動遷移 支援自訂日誌 可擴充性 所有功能都被測試覆蓋 安裝 go get -u gor
Thumbnail
看更多
你可能也想看
Thumbnail
嶄新的台灣獨立調香師品牌Sunkronizo ,這個名稱源自希臘語「同步」的意思。讓香氛不單純只是氣味調製,更是個人風格的展現與靈魂意志延伸的一種溝通語言。 很適合接下來年底聖誕佳節送禮的試香組,以一星期中的日子來為全系列香氛產品命名, 是品牌創立後首個推出全系列概念作品...
Thumbnail
嶄新的台灣獨立調香師品牌Sunkronizo ,這個名稱源自希臘語「同步」的意思。讓香氛不單純只是氣味調製,更是個人風格的展現與靈魂意志延伸的一種溝通語言。 很適合接下來年底聖誕佳節送禮的試香組,以一星期中的日子來為全系列香氛產品命名, 是品牌創立後首個推出全系列概念作品...
Thumbnail
根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。
Thumbnail
根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。
Thumbnail
本文探討串流平臺(VOD)如何徹底改變好萊塢和臺灣影視產業的生態。從美國電影協會(MPA)的數據報告,揭示串流服務在臺灣的驚人普及率與在地內容的消費趨勢。文章分析國際作品如何透過在地化元素開拓新市場。同時,作者也擔憂政府過度監管可能扼殺臺灣影視創新自由,以越南為鑑,呼籲以開放態度擁抱串流時代的新機遇
Thumbnail
本文探討串流平臺(VOD)如何徹底改變好萊塢和臺灣影視產業的生態。從美國電影協會(MPA)的數據報告,揭示串流服務在臺灣的驚人普及率與在地內容的消費趨勢。文章分析國際作品如何透過在地化元素開拓新市場。同時,作者也擔憂政府過度監管可能扼殺臺灣影視創新自由,以越南為鑑,呼籲以開放態度擁抱串流時代的新機遇
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Thumbnail
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
Thumbnail
學習如何使用Python連接MongoDB進行憑證監控,包括建立MongoDB docker-compose、連接MongoDB、讀取yaml並寫入MongoDB、傳入env以及domain寫入MongoDB、讀取MongoDB、修改MongoDB、刪除MongoDB。
Thumbnail
學習如何使用Python連接MongoDB進行憑證監控,包括建立MongoDB docker-compose、連接MongoDB、讀取yaml並寫入MongoDB、傳入env以及domain寫入MongoDB、讀取MongoDB、修改MongoDB、刪除MongoDB。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News