Go学习笔记-使用MySQL数据库
2017-12-28 15:17:31
Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常 用的有如下几种:
- https://github.com/Go-SQL-Driver/MySQL 支持database/sql,全部采用go写。
- https://github.com/ziutek/mymysql 支持database/sql,也支持自定义的接口,全部采用go写。
- https://github.com/Philio/GoMySQL 不支持database/sql,自定义接口,全部采用go写。
接下来的例子主要以第一个驱动为例,也推荐大家采用它,主要理由:这个驱动比较新,维护的比较好,完全支持database/sql接口 支持keepalive,保持长连接。
package main
import (
"database/sql"
"fmt"
_ "github.com/Go-SQL-Driver/MySQL"
"os"
)
func checkErr(err error) {
if err != nil {
fmt.Println("Error is ", err)
os.Exit(-1)
}
}
// sql.Open()函数用于打开数据库驱动,Go-SQL-Driver中注册了mysql这个数据库驱动,第二个参数是DNS,配置数据库信息
// db.Prepare()函数用来返回准备要执行的sql操作,返回准备完毕状态
// db.Query() 函数用来直接执行Sql返回Rows结果
// stmt.Exec() 函数用来执行stmt准备好的SQL
func main() {
// sql.Open("mysql", "用户名:密码@tcp(IP:端口)/数据库?charset=utf8")
db, err := sql.Open("mysql", "root:xxxxx@tcp(xxxxxxxx:3306)/test?charset=utf8")
checkErr(err)
fmt.Println("链接数据库test")
//插入
stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
checkErr(err)
res, err := stmt.Exec("XXXXX", "Gopher", "2012-12-09")
checkErr(err)
id, err := res.LastInsertId()
checkErr(err)
fmt.Println(id)
//更新数据
stmt, err := db.Prepare("update userinfo set username=? ,departname=? where id=?")
checkErr(err)
res, err := stmt.Exec("testusername", "testdepartname", id)
checkErr(err)
affect, err := res.RowsAffected()
checkErr(err)
fmt.Println(affect)
//查询数据
rows, err := db.Query("select * from userinfo")
checkErr(err)
for rows.Next() {
var id int
var username string
var departname string
var created string
err = rows.Scan(&id, &username, &departname, &created)
checkErr(err)
fmt.Println(id)
fmt.Println(username)
fmt.Println(departname)
fmt.Println(created)
}
}

浙公网安备 33010602011771号