Go 操作 MySQL
Go 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
参考
阅读 2561 · 发布于 2020-11-09
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Android 小米,魅族 6.0 状态栏不能反色解决方法阅读 3590
-
Go 命令之 godoc阅读 1277
-
Java 进程间通讯的几种方式阅读 2773
-
数据结构:队列-数组实现阅读 1391
-
Flutter Web 构建 release 版本阅读 158
-
Spring Boot 获取 HttpServletRequest 的几种方式阅读 1542
-
MySQL 性能优化之 explain type 字段阅读 1683
-
Java 中类的变量、代码块、构造方法加载的顺序阅读 1601
-
Linux 命令之 tail -f 显示行号阅读 13019
-
OpenResty 使用 lua-resty-upload 上传文件阅读 2581