连接mysql数据库
1、创建数据库表
create table student (
id int NOT NULL AUTO_INCREMENT,
name varchar(20),
age int
)
2、添加数据
insert into student values(1001,"lena",21),(1002,"titiy",22);
3、go get mysql
如果是第一次连接mysql数据库,需要先拉取mysql所需要的包
go get -u github.com/go-sql-driver/mysql
该过程我遇到了一个代理失败的error,如相同可参考:https://blog.csdn.net/lena7/article/details/120254809
4、Golang测试连接数据库
由于在实际中并未使用到mysql的包,但在sql.Open
中传入mysql会自动查找mysql
,并不是直接使用到,我使用的工具Goland会自动将未直接使用导包删除掉,因此我们可以在mysql的导包前面加_
。
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql" // 必须导入否则无法识别mysql
)
func ConnMysql() {
// 格式:账号:密码@tcp(数据库ip:数据库端口)/数据库名称
url := "root:root@tcp(127.0.0.1:3306)/test"
// func Open(数据库驱动名称,连接信息) (*DB, error)
db, err := sql.Open("mysql", url)
if err != nil {
fmt.Println("conn err :",err)
return
}
defer db.Close()
// 尝试链接
err = db.Ping()
if err != nil {
fmt.Println("ping err :",err)
return
}
fmt.Println("conn success!") // conn success!
}
如果连接失败,可以进行以下尝试:
- 首先打开电脑的命令行模式,输入
mysql
看看是否有信息,如果没有,可能是未启动mysqld服务、没有配置环境变量等原因。 - 使用命令
mysql -u 账号 -p
回车后输入密码,查看是否能够进入数据库。如果在命令行能够进入,连接应该没什么问题。
数据库操作
CRUD
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"fmt"
)
var db *sql.DB
func Conn() {
url := "root:root@tcp(127.0.0.1:3306)/test"
db, _ = sql.Open("mysql", url)
// 尝试链接
err := db.Ping()
if err != nil {
fmt.Println("ping err :",err)
return
}
fmt.Println("conn success!") // conn success!
}
/**
创建student结构体用于操作数据库表student
create table student (
id int primary key,
name varchar(20),
age int
*/
type Student struct {
id int
name string
age int
}
// 查询一条记录:QueryRow
func QueryOne(id int) Student {
sql := "select * from student where id = ?"
s:=Student{
}
// 查询后需要用Scan将查询结果写入结构体中
err := db.QueryRow(sql,id).Scan(&s.id, &s.name, &s.age)
if err != nil