在go语言中,连接数据库方式也是非常简单的,需要引用包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() }