今天小编给大家分享一下go连接mysql的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
创建user表
CREATE TABLE `user` (
`user_id` int NOT NULL AUTO_INCREMENT,
`user_name` varchar(100) DEFAULT NULL,
`user_code` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_user_code_IDX` (`user_code`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
1、新建一个项目目录 wms
2、打开cmd命令窗口,进入wms目录
3、初始化项目
go mod init fa.com/wms
go mod init 初始化命令,fa.com/wms 为模块路径
4、下载go驱动
go get github.com/go-sql-driver/mysql@latest
执行go get 命令下载最新版本的go mysql驱动
新建mysqlutil.go,用来建立mysql连接
package db
import (
"database/sql"
"fmt"
"time"
//注册驱动器 _下划线表示执行驱动中的init函数,不使用其他函数
_ "github.com/go-sql-driver/mysql"
)
// 创建数据库连接
func ConnMySQL() *sql.DB {
// 数据源名
driverName := "mysql"
// 用户名root
// 密码1234
// tcp协议连接
// 数据库地址
// 数据库 wms
dataSourceName := "root" + ":" + "1234" + "@" + "tcp" + "(" + "127.0.0.1:3306" + ")" + "/" + "wms"
db, err := sql.Open(driverName, dataSourceName)
if err != nil {
panic(err)
}
// 数据库设置
db.SetConnMaxLifetime(time.Minute * 10)
db.SetConnMaxIdleTime(time.Minute * 10)
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(10)
// 连接测试
err = db.Ping()
if err != nil {
fmt.Println("数据库连接失败")
panic(err)
}
return db
}
新建user.go
// 包名
package user
import (
"log"
// 引入mysql数据库连接包
"fa.com/wms/db"
)
// 定义user类型结构体
type User struct {
UserId int
UserName string
UserCode string
Password string
}
// 向数据库新增一个User数据
func AddUser(u *User) {
// 调用db包ConnMySQL()
db := db.ConnMySQL()
// 预编译保存sql创建 statement
stmt, err := db.Prepare("INSERT INTO `user` (user_name, user_code, password) VALUES (?, ?, ?)")
// err 不等空则statement创建失败
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
}
// 在函数运行结束时关闭statement
defer stmt.Close()
// 执行保存sql
// _下划线 表示忽略函数返回的sql.Result值
_, err = stmt.Exec(u.UserName, u.UserCode, u.Password)
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
}
}
func DeleteById(userId int) {
db := db.ConnMySQL()
// 预编译删除sql创建 statement
stmt, err := db.Prepare("delete from `user` where user_id = ?")
// err 不等空则statement创建失败
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
}
// 在函数运行结束时关闭statement
defer stmt.Close()
// 执行删除sql
// _下划线 表示忽略函数返回的sql.Result值
_, err = stmt.Exec(userId)
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
}
}
func UpdateUser(u *User) {
db := db.ConnMySQL()
// 预编译更新sql创建 statement
stmt, err := db.Prepare("UPDATE `user` SET user_name=?, user_code=?, password=? WHERE user_id=?")
// err 不等空则statement创建失败
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
}
// 在函数运行结束时关闭statement
defer stmt.Close()
// 执行更新sql
// _下划线 表示忽略函数返回的sql.Result值
_, err = stmt.Exec(u.UserName, u.UserCode, u.Password, u.UserId)
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
}
}
func QueryUserByCode(code string) []User {
// 调用db包ConnMySQL()
db := db.ConnMySQL()
// 预编译查询sql创建 statement
stmt, err := db.Prepare("SELECT user_id, user_name, user_code, password FROM `user` WHERE user_code= ?")
if err != nil {
log.Fatal(err)
panic(err)
}
defer stmt.Close()
// 执行查询sql,返回查询结果rows
rows, err := stmt.Query(code)
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
}
// 定义User切片
s := make([]User, 0)
// 遍历rows
for rows.Next() {
u := User{}
// 扫描rows的每一列并保存数据到User对应字段
err := rows.Scan(&u.UserId, &u.UserName, &u.UserCode, &u.Password)
if err != nil {
// 打印错误信息
log.Fatal(err)
// 抛出错误信息,阻止程序继续运行
panic(err)
},
// 扫描后的user加入到切片
s = append(s, u)
}
return s
}
以上代码使用vscode编写,目录结构如下图所示:
以上就是“go连接mysql的方法是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://blog.csdn.net/weixin_56349119/article/details/125732259