Go语言 连接MySQL数据库 笔记|青训营笔记

124 阅读2分钟

这是我参与第五届青训营笔记创作活动的第10天,今天是大年初三,不知道各位有没有坚持在学习呢,今天我将总结一下Go语言中的SQL连接的以及执行相关SQL语句操作,主要使用github.com/go-sql-driver/mysql驱动。

简介

Go官方没有提供数据库驱动,而是为开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,

而在Go语言中常用的数据库驱动有如下几种:

参考:w3cschool

而我今天主要使用go-sql-driver作为驱动。

使用go-sql-driver连接数据库

初始化

  1. 下载软件包
go mod init moduleName  //初始化module
go get -u github.com/go-sql-driver/mysql  //使用软件包
  1. 在项目中引入软件包
import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql"  
)
  1. 连接数据库

sql.Open()函数用来打开一个注册过的数据库驱动,go-sql-driver中注册了mysql这个数据库驱动

db, err = sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")

上述语句中,Open函数的第二个语句为DSN(Data Source Name),它是go-sql-driver定义的一些数据库链接和配置信息,其有如下格式:

user@unix(/path/to/socket)/dbname?charset=utf8
user:password@tcp(localhost:5555)/dbname?charset=utf8
user:password@/dbname
user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname
  1. 关闭连接
db.Close()

执行SQL语句

  1. 执行查询语句
//示例
sqlStatement :=`SELECT * FROM Table WHERE id = ?;` 
stmt, err := db.Prepare(sqlStatement)  //准备执行
if err != nil {
	return fmt.Errorf("init error :%s", err)
}
rows, err := stmt.Query(id)  //将id替换占位符”?”并执行查询
if err != nil {
	return fmt.Errorf("execute error :%s", err)
}
defer rows.Close()  //执行后释放查询
for rows.Next() {  //rows.Next()返回bool类型值,代表是否有下一条消息
	var u User  //自定义结构体
	err := rows.Scan(&u.Id, &u.Name)  //扫描行并赋值给对应值
}
  1. 执行插入/删除/修改语句
sqlStatement := sql  //使用占位符为?的SQL语句
stmt, err := db.Prepare(sqlStatement)
_, err = stmt.Exec(...)
if err != nil {
	return fmt.Errorf("execute error :%s", err)
}

今天的总结到这里就结束了,后面准备再学习一下Gorm的相关知识,之后再进行总结。感谢观看,希望各位在新的一年里也要好好学习知识,争取进入大厂拧螺丝!