社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
参考《go语言编程入门与实战技巧》
目前使用比较多的是https://github.com/go-sql-driver/mysql,该驱动支持database/sql接口,支持keepalive,且当前维护较好。
使用该驱动首先需要将其clone到本地的gopath/src路径下。
以win10系统使用goland为例,查看gopath方式为file>>setting>>gopath
打开该目录使用git clone下载驱动程序。
接下来就是在程序中引入该驱动,方式如下。
import (
_ "mysql"
)
引入时前面要带下划线,因为这里只需要在引用包时调用包的init函数,在init里实现数据库驱动的注册,而不需要使用包里的函数和变量等资源。如果不加下划线,程序会报错,因为后面在使用时我们并没有使用mysql包里的任何资源。
引入包的几种方式可以参见Golang- import 导入包的几种方式:点,别名与下划线
(1)数据表
(2)测试代码
package main
import (
"database/sql"
"fmt"
_ "mysql"
)
func main() {
db, err := sql.Open("mysql", "djq:lnx@/test?charset=utf8")
check(err)
//插入数据
stmt, err := db.Prepare("insert userinfo set username=?, departname=?,created=?")
check(err)
res, err := stmt.Exec("hbliuu", "zebra English", "2019-11-04")
check(err)
id, err := res.LastInsertId()
check(err)
fmt.Println("id is: ", id)
//更新数据
stmt, err = db.Prepare("update userinfo set departname=? where username=?")
check(err)
res, err = stmt.Exec("toutiao", "jero")
affect, err := res.RowsAffected()
check(err)
fmt.Println("affected row is: ", affect)
//查询数据
rows, err := db.Query("select * from userinfo")
check(err)
for rows.Next() {
var uid int
var username string
var department string
var created string
err = rows.Scan(&uid, &username, &department, &created)
check(err)
fmt.Printf("uid: %d, username: %s, department: %s, created: %sn", uid, username, department, created)
}
//删除数据
stmt, err = db.Prepare("delete from userinfo where uid=?")
check(err)
res, err = stmt.Exec("1")
check(err)
affect, err = res.RowsAffected()
check(err)
fmt.Println("affected row is: ", affect)
db.Close()
}
func check(err error) {
if err != nil {
panic(err)
}
}
(3)测试结果
注:uid设置了递增,之前产生过2,3但是被我删了,所以直接变成了4
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!