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")
}
最后修改:2019 年 12 月 04 日 02 : 54 PM
如果觉得我的文章对你有用,请随意赞赏