go语言连接mysql数据库的个人理解

相信简单的使用golang语言,大家都会,可是很多时候,我们都离不开与数据库的交互,今天就介绍一下go语言,如何连接mysql
在没有连接上数据库之前,总是会碰到这样那样的报错,经过反复的思考和总结,今天就来说一下go语言连接mysql的一些坑吧
准备工作:
1.首先配置好go环境,即可以运行go语言
先测试一下go是否安装成功,如图用 cmd 输入go 按enter!
go语言连接mysql数据库的个人理解_第1张图片
出现此类帮助信息,则代表go安装成功!
1.2 接下来配置环境变量
如何设置环境变量,在上一节,已经提到过了,这次说一下重点,
1.2.1 GOROOT 环境变量
go语言连接mysql数据库的个人理解_第2张图片
这里配置的目录是go安装的目录
1.2.2 GOPATH
go语言连接mysql数据库的个人理解_第3张图片
这里配置的目录是工作目录,也就是你要运行的程序的目录
就强调这两点
1.3在工作目录下添加三个子文件夹
go语言连接mysql数据库的个人理解_第4张图片
其中src代表存放的是要运行的文件如:hello.go
hello.go的内容

package main
import "fmt"
func main(){
fmt.Printf("Hello 百度回享")
}

打开cmd控制器然后输入go run hello.go
go语言连接mysql数据库的个人理解_第5张图片
注意一点只有你打开的目录是你的工作目录时才可以直接写hello.go若不是工作目录,这里就得写你自己的工作目录,如:go run F:/go/test/src/hello.go
若运行结果,如上图则go语言配置成功,接下来连接mysql
2.1 连接mysql之前先要下载mysql驱动
可以用cmd下载:如 :go get github.com/go-sql-driver/MYSQL
如果下载不到,就可以自己输入网址去下载,然后将它拷贝到src的文件夹下面
接下里的内容很关键,记住因为你下载的是这个目录:github.com/go-sql-driver/MYSQL,所以你如果使用cmd是话就会自动创建,而如果是自己考培的话就要加上目录,或者直接建一个mysql文件夹,将拷贝来的数据放到其下面,
2.2 接下来就要验证是否成功连接数据库
创建一个main.go,代码如下

package main
import(
    "database/sql"
    _"github.com/Go-SQL-Driver/MySQL"//就是你下载的文件地址,如果是自己拷贝的,那么就写自己创建的路径
    "log"
    //"reflect"    //获取变量类型用
)
// user中的数据根据自己要查询的表的数据做响应的改变,
type User struct{
    id int
    username string
    password string
    create_time string
    create_user string
    role_id int
    nick_name string
    remak string
}

 func main (){
 // db-user mysql账号
 // db-psw mysql密码
 // db-datebase 需要连接的数据库名称
    db,err := sql.Open("mysql","db-user:db-psw@tcp(localhost:3306)/db-database?charset=utf8")
    if err != nil{
            panic(err.Error())
            log.Println(err)
            return
    }
    defer db.Close()  //只有在前面用了 panic[抛出异常] 这时defer才能起作用,如果链接数据的时候出问题,他会往err写数据。defer:延迟,这里立刻申请了一个关闭sql 链接的草错,defer 后的方法,或延迟执行。在函数抛出异常一会被执行
    var user User
    select_sql := "select * from yttz_users  "
    select_err := db.QueryRow(select_sql).Scan(&user.id,&user.username,&user.password,&user.create_time,&user.create_user,&user.role_id,&user.nick_name,&user.remak)//查询一条,返回一条结果。并赋值到user这个结构体类型的变量中,就算查询到的是多条,单返回的还是一条,注意这里出现的数据,在user中必须存在否则会报错
    if select_err != nil {//如果没有查询到任何数据就进入if中err:no rows in result set
            log.Println(select_err)
            return
    }
    log.Println(user)
}

若出现你查询后的数据说明数据库连接成功,便会出现如下效果
这里写图片描述

你可能感兴趣的:(技术)