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

短命女 2022-09-30 06:30 327阅读 0赞

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接口

  1. 支持keepalive,保持长连接

1、建表

  1. CREATE TABLE `user_info` (
  2. `uid` INT(10) NOT NULL AUTO_INCREMENT,
  3. `username` VARCHAR(64) NULL DEFAULT NULL,
  4. `departname` VARCHAR(64) NULL DEFAULT NULL,
  5. `created` DATE NULL DEFAULT NULL,
  6. PRIMARY KEY (`uid`)
  7. );

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

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

我的环境变量设置:

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

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

Center

3、编写代码

mysql.go

  1. package main
  2. import (
  3. _ "github.com/go-sql-driver/mysql"
  4. "database/sql"
  5. "fmt"
  6. //"time"
  7. )
  8. func main() {
  9. db, err := sql.Open("mysql", "root:123456@/test?charset=utf8")
  10. checkErr(err)
  11. // 插入数据
  12. stmt, err := db.Prepare("INSERT user_info SET username=?,departname=?,created=?")
  13. checkErr(err)
  14. res, err := stmt.Exec("test", " 研发部门", "2017-12-09")
  15. checkErr(err)
  16. id, err := res.LastInsertId()
  17. checkErr(err)
  18. fmt.Println(id)
  19. // 更新数据
  20. stmt, err = db.Prepare("update user_info set username=? where uid=?")
  21. checkErr(err)
  22. res, err = stmt.Exec("test", id)
  23. checkErr(err)
  24. affect, err := res.RowsAffected()
  25. checkErr(err)
  26. fmt.Println(affect)
  27. // 查询数据
  28. rows, err := db.Query("SELECT * FROM user_info")
  29. checkErr(err)
  30. for rows.Next() {
  31. var uid int
  32. var username string
  33. var department string
  34. var created string
  35. err = rows.Scan(&uid, &username, &department, &created)
  36. checkErr(err)
  37. fmt.Println(uid)
  38. fmt.Println(username)
  39. fmt.Println(department)
  40. fmt.Println(created)
  41. }
  42. // 删除数据
  43. stmt, err = db.Prepare("delete from user_info where uid=?")
  44. checkErr(err)
  45. //res, err = stmt.Exec(id)
  46. checkErr(err)
  47. affect, err = res.RowsAffected()
  48. checkErr(err)
  49. fmt.Println(affect)
  50. db.Close()
  51. }
  52. func checkErr(err error) {
  53. if err != nil {
  54. panic(err)
  55. }
  56. }

4、测试
Center 1

Center 2

发表评论

表情:
评论列表 (有 0 条评论,327人围观)

还没有评论,来说两句吧...

相关阅读