一、在go使用如何使用MySQL
Go语言中的database/sql包定义了对数据库的一系列操作。database/sql/driver包定义了应被数据库驱动实现的接口,这些接口会被sql包使用。但是Go语言没有提供任何官方的数据库驱动,所以我们需要导入第三方的数据库驱动。不过我们连接数据库之后对数据库操作的大部分代码都使用sql包。
1、使用前提:
成功安装MySQL
2、导入依赖包
1)导入包database/sql
2)导入第三方的驱动包go-sql-driver
二、go操作MySql数据库
1、 连接MySql数据库
1) 创建一个db.go文件,导入database/sql包以及第三方驱动包
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
2) 定义两个全局变量
var (
Db *sql.DB
err error
)
DB结构体的说明
3) 创建init函数,在函数体中调用sql包的Open函数获取连接
func init() {
Db, err = sql.Open("mysql", "root:root@tcp(localhost:3306)/test")
if err != nil {
panic(err.Error())
}
}
Open函数的说明
参数dataSourceName的格式:
数据库用户名:数据库密码@[tcp(localhost:3306)]/数据库名
Open函数可能只是验证其参数,而不创建与数据库的连接。如果要检查数据源的名称是否合法,应调用返回值的Ping方法。
返回的DB可以安全的被多个go程同时使用,并会维护自身的闲置连接池。这样一来,Open函数只需调用一次。很少需要关闭DB
2、创建数据库表
table.sql
CREATE TABLE `user` (
`id` int(100) NOT NULL AUTO_INCREMENT ,
`name` varchar(100) NULL ,
`age` int(100) NULL ,
`sex` varchar(100) NULL ,
`likes` varchar(100) NULL ,
PRIMARY KEY (`id`)
)
;
//创建数据库表
func createTable(DB *sql.DB) error {
sqlBytes, err := ioutil.ReadFile(tableName);
if err != nil {
return err
}
sqlTable := string(sqlBytes);
fmt.Println(sqlTable)
_, err = DB.Exec(sqlTable)
if err != nil {
return err
}
return nil
}
3、增删改查操作
Prepare方法的说明
Stmt结构体及它的方法的说明
DB结构体中也有Exec、Query和QueryRow方法
Row结构体及San方法的说明
Rows结构体说明
Next方法和Scan方法说明
代码实例:
获取DB
package utils
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
var (
Db *sql.DB
err error
)
func init() {
Db, err = sql.Open("mysql", "root:root@tcp(localhost:3306)/godb")
if err != nil {
panic(err.Error())
}
}
user