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