go语言如何连接数据库


安装驱动

go get github.com/go-sql-driver/mysql



import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

连接数据库

//用户名:密码^@tcp(地址:3306)/数据库
    db, err := sql.Open("mysql", "root:123456%^@tcp(39.107.87.114:3306)/book_manager?charset=utf8")
    if err!=nil {
        fmt.Println(err)
        return
    }

查询表

//表结构
    type info struct {
        id int `db:"id"`
        name string `db:"name"`
        author string `db:"author"`
    }   
    //查询表
    rows,err:=db.Query("SELECT * FROM book")

    //遍历打印
    for rows.Next(){
        var s info
        err=rows.Scan(&s.id,&s.name,&s.author,)
        fmt.Println(s)
    }
    //用完关闭
    rows.Close()

完整代码

结果

[kou@python golang]$ go run go_mysql.go 
{4 三国演义 罗贯中}

插入

//执行MySql语句
    result,err:=db.Exec("INSERT INTO book(id,name,author)VALUES (?,?,?)",2,"将进酒","李白")

    if err != nil {
        panic(err)
    }   

    fmt.Println(result)

    for rows.Next(){
        var s info
        err=rows.Scan(&s.id,&s.name,&s.author,)
        fmt.Println(s)
    }   

    rows.Close()
}

结果

[kou@python golang]$ !g
go run go_mysql.go 
{4 三国演义 罗贯中}
{0xc0000a2100 0xc000016390}
[kou@python golang]$ !g

go run go_mysql.go 
{2 将进酒 李白}
{4 三国演义 罗贯中}

panic: Error 1062: Duplicate entry '2' for key 'PRIMARY'

goroutine 1 [running]:
main.main()
    /home/kou/golang/go_mysql.go:32 +0x4fa
exit status 2
[kou@python golang]$ !vi
vim go_mysql.go

删除

db.Exec("DELETE FROM book where id=?", 2)
     rows,err:=db.Query("SELECT * FROM book")
     for rows.Next(){
         var s info
         err=rows.Scan(&s.id,&s.name,&s.author,)
         fmt.Println(s)
     }

结果

[kou@python golang]$ !g
go run go_mysql.go 
{4 三国演义 罗贯中}

go语言如何连接数据库介绍到这里,更多Go学习请参考编程字典Go教程 和问答部分,谢谢大家对编程字典的支持。


原文链接:https://blog.csdn.net/csdn_kou/article/details/90730861?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163480011616780274138504%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163480011616780274138504&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-2-90730861.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450