database/sql_ "github.com/go-sql-driver/mysql"

代码实例

日常写法:

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
)


func main() {
	//用户名密码:root\123456 
	//@tcp:已tcp连接
	//(192.168.84.152:13306):数据库ip和端口号
	//sql_demo:具体数据库
	dsn := "root:123456@tcp(192.168.84.152:13306)/sql_demo"
	//open函数只能检查格式是否正确,不正确立即中断程序
	db,err := sql.Open("mysql",dsn)
	if err != nil {
		panic(err)
	}
	//最后调用关闭连接操作
	defer db.Close()
	//判断数据库是否连接成功,可使用db中的Ping参数
	err = db.Ping()
	if err != nil {
		fmt.Printf("connect to db failed,err:%v\n",err)
	}else {
		fmt.Printf("connect to db success")
	}

}

运行程序:(模拟三种场景,连接不上数据库、连接上数据库、连接不到指定数据库)

项目中写法:

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"time"
)
var db *sql.DB

func initMySQL()(err error)  {
	dsn := "root:123456@tcp(192.168.84.133:32768)/sql_demo"
	db,err = sql.Open("mysql",dsn)
	if err != nil {
		panic(err)
	}
	err = db.Ping()
	if err != nil {
		return
	}
	db.SetMaxOpenConns(200) //最大连接数
	db.SetMaxIdleConns(10) //连接池里最大空闲连接数。必须要比maxOpenConns小
	db.SetConnMaxLifetime(time.Second*10) //最大存活保持时间
	db.SetConnMaxIdleTime(time.Second*10) //最大空闲保持时间
	return
}

func main() {
	if err := initMySQL();err !=nil{
		fmt.Printf("connect to db failed,err:%v\n",err)
	}else {
		fmt.Println("connect to db success")
	}
	defer db.Close()

}