请选择 进入手机版 | 继续访问电脑版

[Golang] 利用 GO语言实现Mysql数据库CURD的简单示例

[复制链接]
查看243 | 回复47 | 2021-9-15 00:43:51 | 显示全部楼层 |阅读模式
目次

〇、先容 驱动包和加强 版Mysql操作库Sqlx

  • go-mysql-driver是go语言标准库(SDK)database/sql的”加工产品“,质量有保障!
  • go-mysql-driver运行时间固然 比较长,但是内存使用 较少。
  • go-mysql-driver实现了database/sql,即便不是mysql,是使用 其他数据库,也可以或许 使用 该包。
  • go-mysql-driver接口计划 得比较好,上手较快。
  • 对于Sqlx,它实在 也是go语言标准库(SDK)database/sql的”加工产品“。
  • Sqlx也可以用于其他数据库。
  • Sqlx包实在 最大最大的长处 是在查询方面,也就是使用 select时优化得比较好。比原来的使用 查询方便了不止一点。

一、先导入驱动包和加强 版Mysql操作库Sqlx

  1. package main
  2. import (
  3. "fmt"
  4. //并不需要使用其API,只需要执行该包的init方法(加载MySQL是驱动程序)
  5. _ "github.com/go-sql-driver/mysql"
  6. "github.com/jmoiron/sqlx"
  7. )
复制代码

此处必要 导入导入mysql驱动包和加强 版Mysql操作库Sqlx。
假如 不清晰 怎样 导入第三方包,请查看我的技术博客:手把手教你怎么使用 Go语言第三方库。

二、insert操作

  1. //执行insert操作
  2. func main() {
  3. //连接数据库
  4. //driverName:mysql,表示驱动器的名称是mysql也就上面"github.com/go-sql-driver/mysql"导入的驱动器。
  5. //dataSourceName:root:123456@tcp(localhost:3306)/mydb 账户名:密码@tcp(ip:端口)/数据库名称
  6. //sqlx.Open返回一个*sqlx.DB和错误。
  7. db, _ := sqlx.Open("mysql", "root:123456@tcp(localhost:3306)/mydb")
  8. defer db.Close()
  9. //执行增删改
  10. //query里面是sql语句。
  11. result, e := db.Exec("insert into person(name,age,rmb,gender,brithday) values(?,?,?,?,?);", "小扬", 21, 8888, true, 20000101)
  12. if e!=nil{
  13. fmt.Println("err=",e)
  14. return
  15. }
  16. // RowsAffected returns the number of rows affected by an
  17. // update, insert, or delete. Not every database or database
  18. // driver may support this.
  19. rowsAffected, _ := result.RowsAffected()
  20. // LastInsertId returns the integer generated by the database
  21. // in response to a command. Typically this will be from an
  22. // "auto increment" column when inserting a new row. Not all
  23. // databases support this feature, and the syntax of such
  24. // statements varies.
  25. lastInsertId, _ := result.LastInsertId()
  26. fmt.Println("受影响的行数=",rowsAffected)
  27. fmt.Println("最后一行的ID=",lastInsertId)
  28. }
复制代码

使用 sqlx包的Open毗连 数据库。

driverName:mysql,表示驱动器的名称是mysql也就上面"github.com/go-sql-driver/mysql"导入的驱动器。
dataSourceName是root:123456@tcp(localhost:3306)/mydb 它的含义是

  1. 账户名:密码@tcp(ip:端口)/数据库名称。<br />
复制代码
sqlx.Open返回一个*sqlx.DB和错误。
然后实行 db.Exec()操作。

  1. result, e := db.Exec("insert into person(name,age,rmb,gender,brithday) values(?,?,?,?,?);", "小扬", 21, 8888, true, 20000101)
复制代码

第一个参数是query语句。

  1. rowsAffected, _ := result.RowsAffected()
  2. lastInsertId, _ := result.LastInsertId()
复制代码

RowsAffected()求受影响的行数。RowsAffected返回update, insert, or delete影响的行数。不是每一个数据库和数据库驱动大概 支持这个。
LastInsertId()求插入的末了 一行的ID。
LastInsertId返回数据库天生 的末了 一个ID。通常,这来自插入新行时的“主动 递增”列。不是全部 数据库都支持此功能。

利用
GO语言实现Mysql数据库CURD的简单示例

三、delete操作

  1. result, e := db.Exec("delete from person where name not like ?;", "%扬")
复制代码

还是实行 db.Exec(),第一个参数是delete语句

查看该操作是否实行 成功。

利用
GO语言实现Mysql数据库CURD的简单示例

成功!!!试一试吧!

四、update操作

  1. result, e := db.Exec("update person set name = ? where id = ?;", "大扬", 1)
复制代码

利用
GO语言实现Mysql数据库CURD的简单示例

成功实行 !

来看一看结果 吧!

利用
GO语言实现Mysql数据库CURD的简单示例

现在 可以看到数据更新成功。将id为1的数据的name项更新为”大扬“。
这里两个?,后面就要有两个参数。

五、select操作

  1. package main
  2. import (
  3. "fmt"
  4. //并不需要使用其API,只需要执行该包的init方法(加载MySQL是驱动程序)
  5. _ "github.com/go-sql-driver/mysql"
  6. "github.com/jmoiron/sqlx"
  7. )​
  8. type Person struct {
  9. // 对应name表字段
  10. Name string `db:"name"`
  11. // 对应age表字段
  12. Age int `db:"age"`
  13. // 对应rmb表字段
  14. Money float64 `db:"rmb"`
  15. }
  16. func main() {
  17. db, _ := sqlx.Open("mysql", "root:123456@tcp(localhost:3306)/mydb")
  18. defer db.Close()
  19. //预定义Person切片用于吸取 查询结果
  20. var ps []Person
  21. //实行 查询,得到Perosn对象的集合,丢入预定义的ps地址
  22. e := db.Select(&ps, "select name,age,rmb from person where name like ?;", "%扬")
  23. if e != nil{
  24. fmt.Println("err=",e)
  25. }
  26. fmt.Println("查询成功",ps)
  27. }
复制代码

Person布局 体内里 的属性对应数据库内里 的字段。比如:

  1. Age int `db:"age"`
复制代码

表示Age对应表内里 的字段age。

  1. type Person struct {
  2. // 对应name表字段
  3. Name string `db:"name"`
  4. // 对应age表字段
  5. Age int `db:"age"`
  6. // 对应rmb表字段
  7. Money float64 `db:"rmb"`
  8. }
复制代码
  1. var ps []Person
复制代码

由于 查询的结果 大概 为多条,以是 使用 Person切片。然后将查询结果 放入ps中
提示:要使用 ps的指针!

  1. e := db.Select(&ps, "select name,age,rmb from person where name like ?;", "%扬")
复制代码

下面我们来看看查询结果 :

利用
GO语言实现Mysql数据库CURD的简单示例

到此这篇关于使用 GO语言实现Mysql数据库CURD的简单示例的文章就先容 到这了,更多干系 GO语言Mysql数据库CURD内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 粘瓜莱 | 2021-9-18 22:45:14 | 显示全部楼层
白富美?高富帅?
回复

使用道具 举报

avatar 可怜的冯三厣 | 2021-9-18 22:45:18 | 显示全部楼层
记得吃药!
回复

使用道具 举报

avatar 王建新1 | 2021-9-21 02:06:46 | 显示全部楼层
今天皮痒了?
回复

使用道具 举报

avatar 恋爱的棉被缀 | 2021-10-7 02:48:44 | 显示全部楼层
我和我的小伙伴都惊呆了!
回复

使用道具 举报

avatar 玻璃杯儿敌 | 2021-10-8 00:46:42 | 显示全部楼层
有节操!
回复

使用道具 举报

avatar 右脸破相gl | 2021-10-8 07:48:18 | 显示全部楼层
求加金币!
回复

使用道具 举报

avatar 乔微博 | 2021-10-10 02:38:51 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,运动刷步数还是免费刷的,QQ和微信都可以刷,特别好用。访问地址:http://yd.mxswl.com 猫先森网络
回复

使用道具 举报

avatar 休闲时光8882017 | 2021-10-10 02:38:54 | 显示全部楼层
没人理我,好伤心啊!
回复

使用道具 举报

avatar 123457373 | 2021-10-10 07:21:49 | 显示全部楼层
祖国尚未统一,我却天天灌水,好内疚!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则