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

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、测试





  • 4
    点赞
  • 10
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

爱代码也爱生活

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值