文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

go连接mysql的方法是什么

2023-07-05 17:44

关注

今天小编给大家分享一下go连接mysql的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、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;

二、mysql驱动下载

新建一个项目目录 wms

打开cmd命令窗口,进入wms目录

go连接mysql的方法是什么

初始化项目

go mod init fa.com/wms

go mod init 初始化命令,fa.com/wms 为模块路径

go连接mysql的方法是什么

下载go驱动

go get github.com/go-sql-driver/mysql@latest

执行go get 命令下载最新版本的go mysql驱动

go连接mysql的方法是什么

三、mysql连接参数配置

新建mysqlutil.go,用来建立mysql连接

package dbimport ("database/sql""fmt""time"//注册驱动器 _下划线表示执行驱动中的init函数,不使用其他函数_ "github.com/go-sql-driver/mysql")// 创建数据库连接func ConnMySQL() *sql.DB {// 数据源名driverName := "mysql"// 用户名root// 密码1234// tcp协议连接// 数据库地址// 数据库 wmsdataSourceName := "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}

四、mysql新增数据

新建user.go

// 包名package userimport ("log"// 引入mysql数据库连接包"fa.com/wms/db")// 定义user类型结构体type User struct {UserId   intUserName stringUserCode stringPassword string}// 向数据库新增一个User数据func AddUser(u *User) {// 调用db包ConnMySQL()db := db.ConnMySQL()// 预编译保存sql创建 statementstmt, err := db.Prepare("INSERT INTO `user`(user_name, user_code, password) VALUES (?, ?, ?)")// err 不等空则statement创建失败if err != nil {// 打印错误信息log.Fatal(err)// 抛出错误信息,阻止程序继续运行panic(err)}// 在函数运行结束时关闭statementdefer stmt.Close()// 执行保存sql// _下划线 表示忽略函数返回的sql.Result值_, err = stmt.Exec(u.UserName, u.UserCode, u.Password)if err != nil {// 打印错误信息log.Fatal(err)// 抛出错误信息,阻止程序继续运行panic(err)}}

五、mysql删除数据

func DeleteById(userId int) {db := db.ConnMySQL()// 预编译删除sql创建 statementstmt, err := db.Prepare("delete from `user`  where user_id = ?")// err 不等空则statement创建失败if err != nil {// 打印错误信息log.Fatal(err)// 抛出错误信息,阻止程序继续运行panic(err)}// 在函数运行结束时关闭statementdefer stmt.Close()// 执行删除sql// _下划线 表示忽略函数返回的sql.Result值_, err = stmt.Exec(userId)if err != nil {// 打印错误信息log.Fatal(err)// 抛出错误信息,阻止程序继续运行panic(err)}}

六、mysql修改数据

func UpdateUser(u *User) {db := db.ConnMySQL()// 预编译更新sql创建 statementstmt, err := db.Prepare("UPDATE `user` SET user_name=?, user_code=?, password=? WHERE user_id=?")// err 不等空则statement创建失败if err != nil {// 打印错误信息log.Fatal(err)// 抛出错误信息,阻止程序继续运行panic(err)}// 在函数运行结束时关闭statementdefer stmt.Close()// 执行更新sql// _下划线 表示忽略函数返回的sql.Result值_, err = stmt.Exec(u.UserName, u.UserCode, u.Password, u.UserId)if err != nil {// 打印错误信息log.Fatal(err)// 抛出错误信息,阻止程序继续运行panic(err)}}

七、mysql查询数据

func QueryUserByCode(code string) []User {// 调用db包ConnMySQL()db := db.ConnMySQL()// 预编译查询sql创建 statementstmt, 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,返回查询结果rowsrows, err := stmt.Query(code)if err != nil {// 打印错误信息log.Fatal(err)// 抛出错误信息,阻止程序继续运行panic(err)}// 定义User切片s := make([]User, 0)// 遍历rowsfor 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的方法是什么

以上就是“go连接mysql的方法是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯