新建项目,我这里使用的vscode:
1.新建项目初始化:
手动创建工程文件夹go安装目录->src->projectName
在项目下创建 main.go文件:
在vscode中点击文件->打开文件夹,选择刚刚新建的文件夹。打开后,如下图新建一个文件后缀为.go(main.go)。
打开终端,如下图,输入go mod init go_test(格式:go mod init 新建的文件名称),回车等待。点击运行按钮或ctrl+alt+n运行项目。
2.安装MySQL驱动
要使用Go语言连接MySQL,首先需要安装一个兼容的数据库驱动。go-sql-driver/mysql 是一个广泛使用的开源驱动,可以通过 go get 命令来安装:
go get -u github.com/go-sql-driver/mysql
3.导入驱动包
import ("database/sql"_ "github.com/go-sql-driver/mysql"
)
4. 连接数据库
package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)func main() {// DSN (Data Source Name) 是包含数据库连接信息的字符串dsn := "user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"// 创建数据库连接db, err := sql.Open("mysql", dsn)if err != nil {panic(err.Error())}defer db.Close()// 检查连接是否有效err = db.Ping()if err != nil {panic(err.Error())} else {fmt.Println("Connected to the database!")}
}
参数说明:
user: 数据库用户名
password: 密码
tcp(localhost:3306): 服务器地址和端口(这里是本地主机上的默认MySQL端口)
/dbname: 要连接的数据库名称
charset=utf8mb4: 设置字符集
parseTime=True: 让驱动解析时间类型字段为time.Time类型
loc=Local: 设置时区为本地时区
测试一下:
写一个查询试试:
package mainimport ("database/sql""fmt""log"_ "github.com/go-sql-driver/mysql"
)func main() {// DSN (Data Source Name) 是包含数据库连接信息的字符串dsn := "root:123456@tcp(1.1.1.1:3306)/ry-vue?charset=utf8mb4&parseTime=True&loc=Local"// 创建数据库连接db, err := sql.Open("mysql", dsn)if err != nil {panic(err.Error())}defer db.Close()// 检查连接是否有效err = db.Ping()if err != nil {panic(err.Error())} else {fmt.Println("Connected to the database!")}// 查询单个用户userId := 2getUser(db, userId)
}// 查询单个用户
func getUser(db *sql.DB, user_id int) {query := "SELECT user_id ,user_name,nick_name FROM sys_user WHERE user_id = ?"row := db.QueryRow(query, user_id)var user_name stringvar nick_name string// 调用完了 QueryRow 方法之后,一定要记得调用 Scan 方法,否则持有的数据库连接不会被释放if err := row.Scan(&user_id, &user_name, &nick_name); err != nil {if err == sql.ErrNoRows {fmt.Printf("用户 ID %d 不存在\n", user_id)} else {log.Fatal(err)}} else {fmt.Printf("用户 ID: %d, userName: %s, nickName: %s\n", user_id, user_name, nick_name)}}