go操作操作mysql(增删改查)

xingyun86 2018-4-17 2294

go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,
常用的有如下几种:
      https://github.com/Go-SQL-Driver/MySQL 支持database/sql,全部采用go写。
      https://github.com/ziutek/mymysql 支持database/sql,也支持自定义的接口,全部采用go写。
      https://github.com/Philio/GoMySQL 不支持database/sql,自定义接口,全部采用go写。
 
推荐第1个,主要理由:
      这个驱动比较新,维护的比较好
      完全支持database/sql接口

      支持keepalive,保持长连接

1、建表

CREATE TABLE `user_info` (  
    `uid` INT(10) NOT NULL AUTO_INCREMENT,  
    `username` VARCHAR(64) NULL DEFAULT NULL,  
    `departname` VARCHAR(64) NULL DEFAULT NULL,  
    `created` DATE NULL DEFAULT NULL,  
    PRIMARY KEY (`uid`)  
);


2、下载mysql驱动,我使用的是go get下载,需先安装git:yum install -y git

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

我的环境变量设置:

export PATH=$PATH:/usr/local/go/bin
export GOPATH=/data/go

所以下载到/data/go/src目录


3、编写代码

mysql.go

package main  
import (  
    _ "github.com/go-sql-driver/mysql"  
    "database/sql"  
    "fmt"  
    //"time"  
)  
  
func main() {  
    db, err := sql.Open("mysql", "root:123456@/test?charset=utf8")  
    checkErr(err)  
    // 插入数据  
    stmt, err := db.Prepare("INSERT user_info SET username=?,departname=?,created=?")  
    checkErr(err)  
    res, err := stmt.Exec("test", " 研发部门", "2017-12-09")  
    checkErr(err)  
    id, err := res.LastInsertId()  
    checkErr(err)  
    fmt.Println(id)  
      
    // 更新数据  
    stmt, err = db.Prepare("update user_info set username=? where uid=?")  
    checkErr(err)  
    res, err = stmt.Exec("test", id)  
    checkErr(err)  
    affect, err := res.RowsAffected()  
    checkErr(err)  
    fmt.Println(affect)  
      
    // 查询数据  
    rows, err := db.Query("SELECT * FROM user_info")  
    checkErr(err)  
    for rows.Next() {  
         var uid int  
         var username string  
         var department string  
         var created string  
         err = rows.Scan(&uid, &username, &department, &created)  
         checkErr(err)  
         fmt.Println(uid)  
         fmt.Println(username)  
         fmt.Println(department)  
         fmt.Println(created)  
    }  
      
    // 删除数据  
    stmt, err = db.Prepare("delete from user_info where uid=?")  
    checkErr(err)  
        //res, err = stmt.Exec(id)  
    checkErr(err)  
    affect, err = res.RowsAffected()  
    checkErr(err)  
    fmt.Println(affect)  
    db.Close()  
}  
func checkErr(err error) {  
    if err != nil {  
        panic(err)  
    }  
}

4、测试




×
打赏作者
最新回复 (0)
查看全部
全部楼主
返回