Golang 操作 MySQL 数据库
Golang MySQL 大约 2528 字下载驱动
使用go-sql-driver/mysql
驱动:https://github.com/go-sql-driver/mysql
go get -u github.com/go-sql-driver/mysql
链接数据库
import (
"database/sql"
"log"
"time"
_ "github.com/go-sql-driver/mysql"
)
var db *sql.DB
func init() {
database, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test_db")
if err != nil {
log.Fatal(err)
}
db = database
db.SetConnMaxLifetime(time.Minute * 3)
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(10)
err = db.Ping()
if err != nil {
log.Fatal(err)
}
}
func main() {
defer db.Close()
// TODO
}
查询列表
占位符:?
func queryForList() {
rows, err := db.Query("select id, name from tb_user where id = ?", 1)
if err != nil {
if err == sql.ErrNoRows {
log.Println("无数据")
}
log.Fatal(err)
}
defer rows.Close()
var result = make(map[string]interface{})
for rows.Next() {
var (
id int
name string
)
err := rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
result[name] = id
}
if err := rows.Err(); err != nil {
log.Println("rows err: ", err)
}
log.Println("queryForList#", result)
}
查询单条
func queryForObject() {
var (
id int
name string
)
row := db.QueryRow("select id, name from tb_user where id = ? limit 1", 1)
err := row.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
log.Println("queryForObject#", id, name)
}
插入数据
func insert() {
stmt, err := db.Prepare("insert into tb_user(id,name) values(?,?)")
if err != nil {
log.Fatal(err)
}
result, err := stmt.Exec(1, "test_name")
if err != nil {
log.Fatal(err)
}
lastId, err := result.LastInsertId()
if err != nil {
log.Fatal(err)
}
rowCnt, err := result.RowsAffected()
log.Printf("ID = %d, affected = %d\n", lastId, rowCnt)
}
事务
func transaction() {
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
defer tx.Rollback()
stmt, err := tx.Prepare("insert into tb_user(id,name) values(?,?)")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
_, err = stmt.Exec(1, "test_name2")
if err != nil {
log.Fatal(err)
}
err = tx.Commit()
if err != nil {
log.Fatal(err)
}
}
驱动列表
https://github.com/golang/go/wiki/SQLDrivers
参考
阅读 1842 · 发布于 2020-11-09
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
MySQL 存储 Emoji 表情阅读 1097
-
Redis 使用 hash tag 插入到同一个哈希槽阅读 3974
-
GoJS 给右键菜单添加外边框阅读 905
-
Golang 加密算法之 md5阅读 1291
-
Linux 之 CentOS yum 更换镜像阅读 2413
-
算法:字典序排序阅读 1234
-
Java 换行符 line separator阅读 3753
-
Jedis OOM command not allowed when used memory > 'maxmemory'阅读 2650
-
Nginx 查看已安装模块阅读 5438
-
Kubernetes kubectl config 管理配置集群阅读 221