Golang 操作常用数据库
- Golang 中对数据库的操作主要通过database/sql库来实现,但实际对数据库的操作并不是该库实现的而是由实现了其接口的对应数据库驱动做的
因此需要引入对应的驱动并调用初始化方法
- 常用的几种数据库连接操作:
- mysql:
- mysql 驱动安装
go get github.com/go-sql-driver/mysql
- import 时调用初始化方法 _ “github.com/go-sql-driver/mysql”
//增:
func TestMysqlInsert(){
DB, err1 := sql.Open("mysql", user:passwd@tcp(host:port)/DataBaseName)
defer DB.Close()
//sql.Open()接收驱动名称和一个包含连接目标的字符串,返回对应的连接对象
check(err1)
dbw, err2 := DB.Prepare("insert into Account(username,userid,passwd,email) values(?,?,?,?)")
//Prepare()接收带有占位符?的sql语句,相同格式的查询只需要一次Prepare调用,能够避免SQL字符串拼接的SQL注入问题
check(err2)
dbr, err3 := dbw.Exec("ligs", "162721", "wasu", "ligs@163.com")//对应占位符
//也可以直接使用DB.Exec()直接传入sql语句来执行
//DB.Exec("insert into Account(username,userid,passwd,email) values ( "hades", "162721", "2333", "3211@qq.com"))
check(err3)
row, err4 := dbr.RowsAffected()//返回操作影响的记录数
check(err4)
log.Println(row)
}
//添加表
func TestMysqlTableAdd() {
db, err := sql.Open("mysql", user:passwd@tcp(host:port)/DataBaseName)
defer db.Close()
check(err)
res, err2 := db.Exec("create table if not exists Student(name varchar(20),sex char(4),age int,id varchar(15),primary key(id))")
check(err2)
rs, errors := res.RowsAffected()
check(errors)
log.Printf("%v rows were infl