加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 操作mysql(增删查改)

发布时间:2020-12-16 19:09:05 所属栏目:大数据 来源:网络整理
导读:相关文档: package sql 文档 go-database-sql 文档 假设 test 数据库中的 user 表中存在已下数据 mysql select * from user; +----+--------+------+ | id | name | age | +----+--------+------+ | 1 | tab | 18 || 2 | tanggu | 27 | | 4 | python | 27 |

相关文档:

  • package sql 文档
  • go-database-sql 文档

假设test数据库中的user表中存在已下数据

mysql> select * from user; +----+--------+------+
| id | name | age | +----+--------+------+
|  1 | tab    |   18 |
|  2 | tanggu |   27 |
| 4 | python | 27 | +----+--------+------+
3 rows in set (0.00 sec)

golang mysql驱动安装

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

现我们通过golangdatabase/sql库操作表数据

package main

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

// 获取表数据
func Get(db *sql.DB) {
    rows,err := db.Query("select * from user;")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()
    cloumns,err := rows.Columns()  
    if err != nil {
        log.Fatal(err)
    }
    // for rows.Next() {
    // err := rows.Scan(&cloumns[0],&cloumns[1],&cloumns[2])
    // if err != nil {
    // log.Fatal(err)
    // }
    // fmt.Println(cloumns[0],cloumns[1],cloumns[2])
    // }
    values := make([]sql.RawBytes,len(cloumns))
    scanArgs := make([]interface{},len(values))
    for i := range values {
        scanArgs[i] = &values[i]
    }
    for rows.Next() {
        err = rows.Scan(scanArgs...)
        if err != nil {
            log.Fatal(err)
        }
        var value string
        for i,col := range values {
            if col == nil {
                value = "NULL"
            } else {
                value = string(col)
            }
            fmt.Println(cloumns[i],": ",value)
        }
        fmt.Println("------------------")
    }
    if err = rows.Err(); err != nil {
        log.Fatal(err)
    }
}

// 插入数据
func Insert(db *sql.DB) {
    stmt,err := db.Prepare("INSERT INTO user(name,age) VALUES(?,?);")
    if err != nil {
        log.Fatal(err)
    }
    res,err := stmt.Exec("python", 19)
    if err != nil {
        log.Fatal(err)
    }
    lastId,err := res.LastInsertId()
    if err != nil {
        log.Fatal(err)
    }
    rowCnt,err := res.RowsAffected()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("ID=%d,affected=%dn",lastId,rowCnt)
}

// 删除数据
func Delete(db *sql.DB) {
    stmt,err := db.Prepare("DELETE FROM user WHERE name='python'")
    if err != nil {
        log.Fatal(err)
    }
    res,err := stmt.Exec()
    lastId,rowCnt)
}

// 更新数据
func Update(db *sql.DB) {
    stmt,err := db.Prepare("UPDATE user SET age=27 WHERE name='python'")
    if err != nil {
        log.Fatal(err)
    }
    res,rowCnt)
}

func main() {
    // username: root; password: 123456; database: test
    db,err := sql.Open("mysql","root:123456@/test")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    // Insert(db)
    // Update(db)
    // Delete(db) 
    Get(db)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读