iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Modern Web

golang後端入門分享系列 第 25

Day25- Go with MySQL

前言

做為一個後端工程師,在架設網站時,免不了碰到資料上的問題,可能在顧客交易後,需要存取訂單,以保留資訊,以利往後查詢,這時你就必須要有一個資料庫,提供你存取資料的功能。
這裡會介紹幾個我在工作上會使用到的資料庫,第一個就是大家比較熟悉的關聯是資料庫 MySQL,Go 語言提供了幾個套件,來對 MySQL 資料庫做操作。

MySQL

因為這裡主要是教學如何使用 Golang 搭配 MySQL,所以不再另外介紹 MySQL。
在開始之前,你需要架設好自己的 MySQL 環境。
在你架設好後,你需要先建設 Database 和 Table ,因為下列程式需要,所以必須先建立好 Table:

CREATE TABLE `student` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(64) NULL DEFAULT NULL,
`gender` VARCHAR(64) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);

go-sql-driver/mysql\

DB連線

首先我們先建立資料庫連線:

db, err := sql.Open("mysql", "root:my-secret-pw@tcp(127.0.0.1:3306)/user")
if err != nil {
panic(err)
}
// 釋放連線
defer db.Close()

寫入資料

插入資料

stmt, err := db.Prepare("INSERT `student` SET `name`=?,`gender`=?")
if err != nil {
     panic(err)
}

res, err := stmt.Exec("JC", "F")
if err != nil {
     panic(err)
}

id, err := res.LastInsertId()
if err != nil {
     panic(err)
}

查詢資料

rows, err := db.Query("SELECT * FROM `student`".)
if err != nil {
	panic(err)
}
for rows.Next() {
	var (
			id     int64
			name   string
			gender string
		)
	scanErr := rows.Scan(&id, &name, &gender)
	if scanErr != nil {
	    panic(err)
	}
	fmt.Println(id)
	fmt.Println(name)
	fmt.Println(gender)
}

更新資料

stmt, err = db.Prepare("update `student` set gender=? where `id`=?")
if err != nil {
     panic(err)
}
res, err = stmt.Exec("M", 1)
checkErr(err)
update, err := res.RowsAffected()
if err != nil {
	panic(err)
}
fmt.Println(update)

刪除資料

stmt, err = db.Prepare("delete from `student` where id=?")
if err != nil {
	panic(err)
}
res, err = stmt.Exec(1)
checkErr(err)
del, err = res.RowsAffected()
if err != nil {
	panic(err)
}
fmt.Println(del)

結語

MySQL 是許多公司使用的 DB,所以建議你可以去仔細研究他的一些機制,以及語法。Go 語言本身很是何做大量的資料讀寫操作,所以若你剛好是使用 MySQL DB 來做儲存系統,有需求是大量讀取 DB,也推薦你使用 Go 語言開發!


上一篇
Day24-Go Json處理
下一篇
Day26- Go with Scylla
系列文
golang後端入門分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言