Go 之基础速学 (十五) golang 里集成 MySQL 驱动调用数据库并 for 循环遍历
学习任何一门语言都要操作mysql数据库,golang也不例外哦,今天就来讲讲如何集成第三方的mysql驱动,在golang里面利用mysql的第三方驱动来操作数据库,并将结果for循环遍历出来,首先你得知道接下来的代码主要是干啥的不是么?
Go 之基础速学 (七) golang 里包的使用 JSON 化 struct 结构体以及 if else 的初次使用
这篇文章当中我们讲过如何引入第三方包来完成json的转化,这里引入mysql的第三方包也是一样的道理 打开git工具git bash here 然后随便哪个目录下执行命令:go get github.com/go-sql-driver/mysql
接下来我们就看代码吧:
package main import ( _ "com.huxiaobai/servicesa" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/pquerna/ffjson/ffjson" ) func main(){ // _ "github.com/go-sql-driver/mysql" 要想使用mysql驱动 就必须要安装第三方的mysql驱动 执行命令 go get github.com/go-sql-driver/mysql即可 //之所以在前边加上_表示我们不需要使用到包里面的东西 但是我们需要初始化包里面的东东来使用 前边我们讲过了的 //root:root@tcp(localhost:3306)/cs?charset=utf8mb4 root用户名:root密码@tcp的链接方式表示远程连接(localhost表示ip地址:3306端口号)/cs表示数据库名称?charset=utf8mb4表示字符集 //返回两个参数 //db,_ := sql.Open("mysql","root:root@tcp(localhost:3306)/cs?charset=utf8mb4") 比如这样如果不想使用err还害怕报错那么可以直接将err用_来代替 和包上使用_是一样的道理 db errdb,err := sql.Open("mysql","root:root@tcp(localhost:3306)/cs?charset=utf8mb4") if err != nil{ fmt.Println("链接错误"+err.Error()) return } //db.query()表示执行原生sql语句 也是返回两个值 rows结果集 error发生错误时候会返回 rows,error := db.Query("select gonghao,xingming from user limit 2") if error != nil{ fmt.Println("查询错误"+error.Error()) return } //for循环 for row.Next(){} 表示循环读取 Next()一行一行的读取 rows.Next()返回bool类型 知道返回false没有结果集了就不再进入循环 //for rows.Next(){ // //定义两个参数 来接收结果集里面字段的值 // var gonghao string // var xingming string // //Scan()表示扫描结果集里面的值并赋值给gonghan和xingming 但是Scan()里面要求传入的是参数的内存地址 当然是用&符号喽 要么你就用new() // rows.Scan(&gonghao,&xingming) // fmt.Println(gonghao,xingming) //} //上边我们是将结果集循环出来赋值给了变量 现在我们将结果集取出来赋值给结构体里面的元素 var userModel models.UserModela = models.UserModela{} for rows.Next(){ rows.Scan(&userModel.GongHao,&userModel.XingMing) fmt.Println(userModel) } //这样就会存在一个弊端 我们上边查出来的是两条 但是通过结构体 我们只能是获取到一条 因为上边的for循环是在不断的改变着结构体里面的值 到最后只有最后一条是放到了结构体里面去的 //即使是数组也不行 数组规定了长度之后就是无法改变的 所以你不确定查出来有几条 所以你也就无法使用数组来存放这些返回值 最好的办法就是切片 写一篇博客来写哦 fmt.Println(userModel) }
重点看代码里面的注释信息 涉及到了mysql驱动的使用 数据查询 for循环 还有Scan的解释 还有结果集赋值给变量 以及结果集赋值给结构体里面的元素 然后将结构体打印出来的案例
本作品采用《CC 协议》,转载必须注明作者和本文链接