golang操作mysql
后端web开发,落到业务上还是增删改查,离不开数据库
golang操作mysql需要先装包 因为golang只定义了接口 实现需要靠第三方包来实现 网上mysql的包很多
这里用的是用的最多的 https://github.com/go-sql-driver/mysql/
执行这个,会自动安装到gopath目录下
go get github.com/go-sql-driver/mysql
注意
非select的sql 尽量不要用query 用exec去执行
因为如果用query去执行update insert delete等操作,我们不需要拿返回值 只需要判断是否执行成功即可
但是如果用query去执行,如果不拿返回值,就会导致数据库连接一直连接状态 会占用一个连接,当连接数大于mysql的同时最高连接数,则会连接出错,导致执行不了sql,所以一定要注意
mysql增删改查
package main
import (
"database/sql"
"fmt"
_"github.com/go-sql-driver/mysql"
"strconv"
)
func main(){
db,err := sql.Open("mysql","数据库用户名:密码@tcp(主机名:端口号)/数据库名?charset=utf8")
if err != nil{
fmt.Println("mysql连接失败")
}
rows,err:= db.Query("select * from code order by id desc limit 5");
if err != nil{
fmt.Println("执行sql错误")
}
var data map[int]map[string]string
data = make(map[int]map[string]string)
for rows.Next(){
var id int
var key string
var create_time string
var update_time string
rows.Columns()
err := rows.Scan(&id,&key,&create_time,&update_time)
if err != nil{
fmt.Printf("get user info error [%s]",err)
}
t := make(map[string]string)
t["key"] = key
t["create_time"] = create_time
t["update_time"] = update_time
t["id"] = strconv.Itoa(id)
data[id] = t
}
for _,v := range data{
fmt.Println(v);
}
db.Exec("update code set `key`='XAZD0ZMW' where id=30000000")
db.Exec("insert into code(`key`,create_time,update_time) values('sdasda11sd','0','0')")
db.Exec("delete from `code` where id=30000000")
}
版权属于:本文是原创文章,版权归 吾梦小站 所有。
本文链接:https://nikm.cn/archives/34.html
本站所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由地转载和修改,但请务必注明文章来源并且不可用于商业目的。