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 语言开发!


<<:  予焦啦!Golang 执行期的锁

>>:  Navigation (2)

Day 29 : MinKube 安装

今天来讲一下Kubernetes的基本安装,这次我们选用MiniKube。MiniKube是一个简单...

[Day29]程序菜鸟自学C++资料结构演算法 – 桶排序法(Bucket sort)

前言:桶排序又名箱排序,究竟这个特殊的排序法是怎麽运作的,让我们一来探讨! 桶排序: 和上一篇的基数...

EP 24: The CRUD & Search of SQLite in TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

Day 15 Chatbot integration- 韩文翻译机器人

Chatbot integration- 韩文翻译机器人 这篇会针对韩文翻译机器人的功能,整合 Az...

Day27-更改UIButton的Image大小,代志不是你想的这麽简单

上一篇提到设置了一个Sign In With Apple的按钮,是使用UIButton里面的Imag...