• 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)
    
    }
    

      

  • 相关阅读:
    关于ajax入门案例
    关于idea maven工程创建struts2入门配置及案例
    hibernate关于多对多注解配置
    hibernate关于一对一注解配置
    hibernate批量处理数据
    HQL链接查询
    关于hibernate组件配置
    VS2010 项目属性的默认包含路径设置方法
    VC++的全局变量(转)
    调用文字在位编辑器
  • 原文地址:https://www.cnblogs.com/eiguleo/p/15406696.html
Copyright © 2020-2023  润新知