golang mysql 客户端

2021/10/14 19:17:09

本文主要是介绍golang mysql 客户端,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

...

使用mysql 客户端的正确姿势,解决一堆 3306 time_wait的问题

package dbs

import (
	"database/sql"
	"fmt"
	"log"
	"time"

	_ "github.com/go-sql-driver/mysql"
)

var MysqlDb *sql.DB
var MysqlDbErr error

const (
	USER_NAME = "root"
	PASS_WORD = "123456"
	HOST      = "localhost"
	PORT      = "3306"
	DATABASE  = "hudb"
	CHARSET   = "utf8"
)

// 初始化链接
func init() {

	dbDSN := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", USER_NAME, PASS_WORD, HOST, PORT, DATABASE, CHARSET)

	// 打开连接失败
	MysqlDb, MysqlDbErr = sql.Open("mysql", dbDSN)
	//defer MysqlDb.Close();
	if MysqlDbErr != nil {
		log.Println("dbDSN: " + dbDSN)
		panic("数据源配置不正确: " + MysqlDbErr.Error())
	}

	// 最大连接数
	MysqlDb.SetMaxOpenConns(100)
	// 闲置连接数
	MysqlDb.SetMaxIdleConns(20)
	// 最大连接周期
	MysqlDb.SetConnMaxLifetime(100 * time.Second)

	if MysqlDbErr = MysqlDb.Ping(); nil != MysqlDbErr {
		panic("数据库链接失败: " + MysqlDbErr.Error())
	}

}


// 用户表结构体
type User struct {
	Id   int64  `db:"id"`
	Name string `db:"name"`
}

// 查询数据,指定字段名
func StructQueryField() {

	user := new(User)
	row := MysqlDb.QueryRow("select id, name from tb1 where id=?", 1)
	if err := row.Scan(&user.Id, &user.Name); err != nil {
		fmt.Printf("scan failed, err:%v", err)
		return
	}
	fmt.Println(user.Id, user.Name)

	MysqlDb.Close()
	row1 := MysqlDb.QueryRow("select id, name from tb1 where id=?", 1)
	if err := row1.Scan(&user.Id, &user.Name); err != nil {
		fmt.Printf("scan failed, err:%v", err)
		return
	}
	fmt.Println(user.Id, user.Name)

}

  



这篇关于golang mysql 客户端的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程