一、Goland库准备
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
如果在导入库时显示导入超时则可以去更换一下代理,打开终端。
go env -w GOPROXY=https://goproxy.cn
然后再次导入即可。
Golang提供了标准库database/sql用于和数据库交互,database/sql只是一套统一地抽象接口,真正与数据库打交道的是各个数据库对应的驱动实现,因此使用前需要先注册对应数据库的驱动(github.com/go-sql-driver/mysql),然后就可以使用SQL中定义的接口来统一地操作数据库了。
原文链接:https://blog.csdn.net/weixin_45005012/article/details/125928610
二、编码
1、全部代码
func main() {
mysqlUrl := "username:password@(Your IP:port)/DBname"
db, _ := sql.Open("mysql", mysqlUrl)
rows, _ := db.Query("select * from user")
for rows.Next() {
var id int
var username string
var password string
rows.Scan(&id, &username, &password, 0)
fmt.Println(id, username, password)
}
defer db.Close()
err := db.Ping()
if err != nil {
fmt.Println("mysql连接失败,错误日志为:", err.Error())
} else {
fmt.Println("连接成功")
}
}
首先定义了mysql连接的url,其中格式如下。用:=来定义变量相当于声明并赋值。
mysqlUrl := "username:password@(Your IP:port)/DBname"
2、执行函数
以下四种方法来进行数据库操作。
db.Query()
db.QueryRow()
db.Prepare(sql) stmt.Query(args)
db.Exec()
3、查询语法
rows, _ := db.Query("select * from user")
for rows.Next() {
var id int
var username string
var password string
rows.Scan(&id, &username, &password, 0)
fmt.Println(id, username, password)
}
首先定义查询语句,然后添加for循环,并且定义与字段名相对应的变量(这里没有尝试过是否名称是否要完全一致),相当于是在返回的结果中取值。
这里发现的问题是:我只想要查询id,username,password三个字段,于是我在rows.Scan()函数中只添加了三个别名,但是这个时候返回的每一行结果都是0。
于是我多尝试了一下发现,将mid字段名加上则可以正常返回结果,在此基础之上我将mid定义去掉,然后最后一个字段填一个0,神奇的是竟然可以。于是可以正常返回前面的所想要的字段。
over!