在前面的文章我们介绍了go语言相关的技术,这篇文章开始我们介绍下使用go语言操作数据库,这也是在日常生活中必然会使用到的技巧。
在go语言里面,我们要操作数据库,需要做两件事,分别是:
1、引入数据库的驱动 2、引入操作数据库的框架
下面我们演示下使用go语言操作mysql数据库的查询示例,直接开始:
1)首先我们引入mysql的驱动
这里我们引入的mysql驱动的话,可以直接使用
_ "github.com/go-sql-driver/mysql"
这里我们在前面添加了一个_,代表的意思就是我们需要使用这个驱动包的init方法,但是不需要调用这个驱动包里面其他的方法。
2)引入mysql操作框架
这里的话我们需要引入操作mysql的框架,在go语言里面各个操作mysql的框架非常的多,在github上开源的很多,但是这里我们演示的话使用的是sqlx。所以这里我们需要引入sqlx包
"github.com/jmoiron/sqlx"
3)初始化mysql链接信息
在执行sql语句之前,我们需要创建mysql的链接,同时让客户端与mysql之间保留创建一个链接,所以这里我们需要初始化mysql的链接信息,这里我们一般可以把代码放在init里面即可,也就是程序执行的时候就创建mysql链接,这样子后面直接使用即可。示例如下:
func initDB() (err error) { dsn := "test2:sxfxzmLm5yTc42Tb@tcp(192.168.31.30:3306)/test2?charset=utf8mb4&parseTime=True" // 也可以使用MustConnect连接不成功就panic db, err = sqlx.Connect("mysql", dsn) if err != nil { fmt.Printf("connect DB failed, err:%v\n", err) return } db.SetMaxOpenConns(20) db.SetMaxIdleConns(10) return } func init() { initDB() }
备注:
1、这里我们说的把初始化链接的代码放在init方法里面,指的是执行这些方法放在init上,但是初始化这些信息我们一般单独放在一个单独方法里面,这样子避免和其他初始化搞混了。
4)接着编写查询语句
这里的查询我们分很多种,一种是单行查询,一种是多行查询,下面我们分别演示下。
首先我们拟定一个查询对象user
type User struct { Id uint Ccltype uint Amount float64 Time string Username string }
单行查询
// 单行查询 func find(id int) { sqlStr := "select id,ccltype,amount,time,username from ccl where id = ?" var u User err := db.Get(&u, sqlStr, id) if err != nil { fmt.Println("查询单行失败!!!err:", err) return } fmt.Println(u) }
多行查询
// 多行查询 func findAll() { sqlStr := "select id,ccltype,amount,time,username from ccl" var u []User err := db.Select(&u, sqlStr) if err != nil { fmt.Println("查询单行失败!!!err:", err) return } fmt.Println(u) }
这样子在执行的时候,我们使用
#查询id为1的用户 find(1) #查询所有用户 findAll()
以上我们就介绍完使用go语言操作mysql的单行查询和多行查询的案例,最后按照惯例,附上本案例的源码,登录后即可查看
还没有评论,来说两句吧...