第十七章:Go语言之MySql

1、MySQL驱动

https://github.com/Go-SQL-Driver/MySQL

sql.Open()函数用来打开一个注册过的数据库驱动,Go-MySQL-Driver中注册了mysql这个数据库驱动,第二个参数是DNS(Data Source Name),

它是Go-MySQL-Driver定义的 一些数据库链接和配置信息。它支持如下格式:

user:password@tcp(localhost:5555)/dbname?charset=utf8

2、增删改查

插入数据

stmt, err := db.Prepare("INSERT user_info SET username=?,departname=?,create_time=?")

res, err := stmt.Exec("zhangsan", "技术部", "2012-12-09")

id, err := res.LastInsertId()

更新数据

stmt, err = db.Prepare("update user_info set username=? where u)

res, err = stmt.Exec("lisi", id)

affect, err := res.RowsAffected()

查询数据

rows, err := db.Query("SELECT * FROM user_info")

for rows.Next() {

var id int

var username string

var department string

var create_time string

err = rows.Scan(&uid, &username, &department, &create_time)

}

删除数据

stmt, err = db.Prepare("delete from user_info where u)

res, err = stmt.Exec(id)

// mysql.go
package main

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

func main() {
        db, err := sql.Open("mysql", "root:123456@tcp(node01:3306)/test?charset=utf8")
        if err != nil {
                panic(err)
        }

        //新增
        /*      stmt, err := db.Prepare("INSERT user_info  SET username=?,departname=?,create_time=?")

                res, err := stmt.Exec("zhangsan", "技术部", "2016-12-09")
                id, err := res.LastInsertId()
                if err != nil {
                        panic(err)
                }

                fmt.Println(id) */

        //修改
        /*stmt, err := db.Prepare("update user_info set username=? where )
        if err != nil {
                panic(err)
        }
        res, err := stmt.Exec("lisi", 1)
        if err != nil {
                panic(err)
        }
        row, _ := res.RowsAffected()
        fmt.Println(row)*/

        //查询
        /*row, err := db.Query("select * from user_info")
        if err != nil {
                panic(err)
        }
        for row.Next() {
                var id int
                var username string
                var departname string
                var create_time string
                err := row.Scan(&id, &username, &departname, &create_time)
                if err != nil {
                        panic(err)
                }
                fmt.Println(id, username, departname, create_time)
        }*/

        //删除
        stmt, err := db.Prepare("delete from user_info where id = ?")
        if err != nil {
                panic(err)
        }
        res, err := stmt.Exec(1)
        if err != nil {
                panic(err)
        }
        row, _ := res.RowsAffected()
        fmt.Println(row)
}