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 协议》,转载必须注明作者和本文链接
胡军
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!