2.8Go操作MySQL数据库(简单方法)
安装go操作MySQL的驱动
1
go get -u -v github.com/go-sql-driver/mysql
go简单操作MySQL数据库
导包
1
import "github.com/go-sql-driver/mysql"
连接数据库,用sql.Open()方法,open()方法的第一个参数是驱动名称,第二个参数是用户名:密码@tcp(ip:port)/数据库名称?编码方式,返回值是连接对象和错误信息,例如:
1
2conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
defer conn.Close()//随手关闭数据库是个好习惯执行数据库操作,这一步分为两种情况,一种是增删改,一种是查询,因为增删改不返回数据,只返回执行结果,查询要返回数据,所以这两块的操作函数不一样。
创建表
创建表的方法也是Exec(),参数是SQL语句,返回值是结果集和错误信息:
1
2res ,err:= conn.Exec("create table user(name VARCHAR(40),pwd VARCHAR(40))")
beego.Info("create table result=",res,err)增删改操作
执行增删改操作语句的是Exec(),参数是SQL语句,返回值是结果集和错误信息,通过对结果集的判断,得到执行结果的信息。以插入数据为例代码如下:
1
2
3res,_:=conn.Exec("insert into user(name,pwd) values (?,?)","tony","tony")
count,_:=res.RowsAffected()
this.Ctx.WriteString(strconv.Itoa(int(count)))查询操作
用的函数是Query(),参数是SQL语句,返回值是查询结果集和错误信息,然后循环结果集取出其中的数据。代码如下:
1
2
3
4
5
6
7
8data ,err :=conn.Query("SELECT name from user")
var userName string
if err == nil{
for data.Next(){
data.Scan(&userName)
beego.Info(userName)
}
}全部代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//连接数据库
conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
if err != nil{
beego.Info("链接失败")
}
defer conn.Close()
//建表
res ,err:= conn.Exec("create table user(userName VARCHAR(40),passwd VARCHAR(40))")
beego.Info("create table result=",res,err)
//插入数据
res,err =conn.Exec("insert user(userName,passwd) values(?,?)","itcast","heima")
beego.Info(res,err)
//查询数据
data ,err :=conn.Query("SELECT userName from user")
var userName string
if err == nil{
for data.Next(){
data.Scan(&userName)
beego.Error(userName)
}
}