一、相关说明
首先,要import以下包:
连接mysql需要导入的包main函数中:
main函数defer db.Close()之后,用db.Ping()尝试与数据库建立连接(检验dsn是否正确):
main函数定义的dsn变量:Data Source Name,用于初始化的字符串内容,需要输入本地mysql的用户名和密码,ip地址以及端口号(一般默认的是3306端口)。dbname即数据库名称,自定义即可,如"sql_demo"。
sql.Open():调用的是"database/sql"这个包中的函数。参数一是相连接的数据库(我们这里用的是mysql),参数二就是我们上面定义的数据源名称dsn。
db.Close():用来释放掉跟数据库连接相关的资源。要注意defer db.Close()要写在err检验之后,因为如果sql.Open()执行出错,db未能正常初始化,此时没有执行db.Close()函数的价值。
db.Ping():与数据库建立连接(检验dsn是否正确)。
二、标准的代码模板
如下图,通常将连接数据库的过程写成一个函数,这里是initMySQL()函数,返回的是一个error类型,main函数进行调用会做相关err检测。所以initMySQL函数内部的err是直接拿返回值里声明的err拿来定义,不需要用":=";此外,defer db.Close()也该放在main函数中的err检测之后。由于db在initMySQL和main函数中都在使用,所以定义一个全局变量,如下图所示,是一个全局的DB结构体指针:
全局的db initMySQL()db.SetConnMaxLifetime()函数是设置连接存活的最长时间,一般可不写;下面两个db.SetMaxOpenConns()和db.SetMaxIdleConns()比较重要,前者表示最大连接数,后者表示最大空闲连接数。
main()
网友评论