分享
golang使用go-sql-driver实现mysql增删改操作
rfyiamcool · · 2063 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
这两天用golang 写的服务端做的都是和redis做交互,因为后期还会用mysql的一个表做验证。 先学习下golang对mysql的操作 !
mymysql和go-mysql-driver是两个现在都很流行的go的mysql驱动,看了下文档,后者比较的健全,听大牛们介绍,貌似go-mysql-driver更加的健全。
安装配置还是那么简单,直接go get就可以了
好了,咱们就开始用go-sql-driver增删改查
先用go-sql-driver链接mysql !!!
一看就懂了,帐号:密码@模式 数据库,以及附带的参数
Python
1
2
3
4
user@unix(/path/to/socket)/dbname
root:pw@unix(/tmp/mysql.sock)/myDatabase?loc=Local
user:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true
完整的例子!
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//xiaorui.cc
#xiaorui.cc
package main
import(
"database/sql"//这包一定要引用,是底层的sql驱动
"fmt"
_"github.com/go-sql-driver/mysql"
"strconv"//这个是为了把int转换为string
)
func main(){//main函数
db,err:=sql.Open("mysql","root:@tcp(localhost:3306)/dbname?charset=utf8")
//数据库连接字符串,别告诉我看不懂。端口一定要写/
iferr!=nil{//连接成功err一定是nil否则就是报错
panic(err.Error())//抛出异常
fmt.Println(err.Error())//仅仅是显示异常
}
defer db.Close()//只有在前面用了panic这时defer才能起作用,如果链接数据的时候出问题,他会往err写数据
rows,err:=db.Query("select id,lvs from xiaorui")
//判断err是否有错误的数据,有err数据就显示panic的数据
iferr!=nil{
panic(err.Error())
fmt.Println(err.Error())
return
}
defer rows.Close()
var idint//定义一个id变量
var lvs string//定义lvs变量
forrows.Next(){//开始循环
rerr:=rows.Scan(&id,&lvs)//数据指针,会把得到的数据,往刚才id和lvs引入
ifrerr==nil{
fmt.Println("id号是",strconv.Itoa(id)+" lvs lvs是"+lvs)//输出来而已,看看
}
}
insert_sql:="INSERT INTO xiaorui(lvs) VALUES(?)"
_,e4:=db.Exec(insert_sql,"nima")
fmt.Println(e4)
db.Close()//关闭数据库
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2063 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
这两天用golang 写的服务端做的都是和redis做交互,因为后期还会用mysql的一个表做验证。 先学习下golang对mysql的操作 !
mymysql和go-mysql-driver是两个现在都很流行的go的mysql驱动,看了下文档,后者比较的健全,听大牛们介绍,貌似go-mysql-driver更加的健全。
安装配置还是那么简单,直接go get就可以了
好了,咱们就开始用go-sql-driver增删改查
先用go-sql-driver链接mysql !!!
一看就懂了,帐号:密码@模式 数据库,以及附带的参数
Python
1
2
3
4
user@unix(/path/to/socket)/dbname
root:pw@unix(/tmp/mysql.sock)/myDatabase?loc=Local
user:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true
完整的例子!
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//xiaorui.cc
#xiaorui.cc
package main
import(
"database/sql"//这包一定要引用,是底层的sql驱动
"fmt"
_"github.com/go-sql-driver/mysql"
"strconv"//这个是为了把int转换为string
)
func main(){//main函数
db,err:=sql.Open("mysql","root:@tcp(localhost:3306)/dbname?charset=utf8")
//数据库连接字符串,别告诉我看不懂。端口一定要写/
iferr!=nil{//连接成功err一定是nil否则就是报错
panic(err.Error())//抛出异常
fmt.Println(err.Error())//仅仅是显示异常
}
defer db.Close()//只有在前面用了panic这时defer才能起作用,如果链接数据的时候出问题,他会往err写数据
rows,err:=db.Query("select id,lvs from xiaorui")
//判断err是否有错误的数据,有err数据就显示panic的数据
iferr!=nil{
panic(err.Error())
fmt.Println(err.Error())
return
}
defer rows.Close()
var idint//定义一个id变量
var lvs string//定义lvs变量
forrows.Next(){//开始循环
rerr:=rows.Scan(&id,&lvs)//数据指针,会把得到的数据,往刚才id和lvs引入
ifrerr==nil{
fmt.Println("id号是",strconv.Itoa(id)+" lvs lvs是"+lvs)//输出来而已,看看
}
}
insert_sql:="INSERT INTO xiaorui(lvs) VALUES(?)"
_,e4:=db.Exec(insert_sql,"nima")
fmt.Println(e4)
db.Close()//关闭数据库
}