GO连接数据库--踩坑(超详细)
作者:互联网
当使用go语言对数据进行连接时需要几部操作:
1.数据库侧:
需要允许远程连接,具体操作方法详见:本地主机连接阿里云数据库(自建数据库)排雷_秋为春的博客-CSDN博客
2.GO侧
1)需要引入go-sql-driver驱动
常见的引入方法有两种:
①通过命令行——前提是go的各个环境变量要配置好
go get -u github.com/go-sql-driver/mysql
②通过git进行复制
首先你的电脑要支持git这个命令,如果不支持需要下载安装Git下载地址给你放这了:
下载安装后,直接把驱动Git到go path目录下:
git clone github.com/go-sql-driver/mysql
之后在go中使用用这个驱动:
import (
"database/sql"
"fmt"
_ "mysql" //引入
)
验证是否可以使用go对数据库进行操作:
首先创建一个数据库:
create database test;
以及一个表:
create table table(
id int(4),
name char(20)
)
通过GO代码对数据库进行简单操作:
语法详解:
sql.open(驱动名,数据源dsn)(*DB,err)
数据源语法:"用户名:密码@[连接方式](主机名:端口号)/数据库名"
注意:open()在执行时不会真正的与数据库进行连接,只是设置连接数据库需要的参数
ping()方法才是连接数据库
代码操作:
package main
import (
"database/sql"
"fmt"
_ "mysql"
)
func main() {
db, err := sql.Open("mysql", "root:xxx@(xxxx:3306)/test")
checkErr(err)
// insert
stmt, err := db.Prepare("INSERT ta SET id=?,name=?")
checkErr(err)
res, err := stmt.Exec(1, "wang")
checkErr(err)
// update
stmt, err = db.Prepare("update ta set name=? where id=?")
checkErr(err)
res, err = stmt.Exec("wang", 1)
checkErr(err)
affect, err := res.RowsAffected()
checkErr(err)
fmt.Println(affect)
// query
rows, err := db.Query("SELECT * FROM ta")
checkErr(err)
for rows.Next() {
var uid int
var username string
err = rows.Scan(&uid, &username)
checkErr(err)
fmt.Println(uid)
fmt.Println(username)
}
// delete
stmt, err = db.Prepare("delete from ta where id=?")
checkErr(err)
res, err = stmt.Exec(1)
checkErr(err)
// query
rows, err = db.Query("SELECT * FROM ta")
checkErr(err)
for rows.Next() {
var uid int
var username string
err = rows.Scan(&uid, &username)
checkErr(err)
fmt.Println(uid)
fmt.Println(username)
}
db.Close()
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
验证:
标签:checkErr,err,--,数据库,db,go,GO,fmt 来源: https://blog.csdn.net/qq_41870111/article/details/121382314