golang操作mysql数据库
时间:2021-07-01 10:21:17
帮助过:9人阅读
"database/sql"
"fmt"
"strconv"
"time"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open(
"mysql",
"root:Admin!1234@tcp(10.99.2.153:3306)/xes_nrcp?charset=utf8")
defer db.Close()
checkErr(err)
//插入数据
insert(
21, db)
//删除数据
delete(
14, db)
//更新数据
update(
15,
"设计部门", db)
//查询数据
get(db)
}
func checkErr(err error) {
if err !=
nil {
panic(err)
}
}
func get(db *
sql.DB) {
rows, _ := db.Query(
"SELECT * FROM aaa_test")
cloumns, _ :=
rows.Columns()
//获取列字段
for _, cloumn :=
range cloumns {
fmt.Print(cloumn +
" ")
}
fmt.Println()
//遍历返回结果
for rows.Next() {
rows.Scan(&cloumns[
0], &cloumns[
1], &cloumns[
2], &cloumns[
3])
fmt.Println(cloumns[0], cloumns[
1], cloumns[
2], cloumns[
3])
}
}
func insert(id int, db *
sql.DB) {
//插入数据方式
stmt, _ := db.Prepare(
"INSERT aaa_test SET id=?,nameA=?,descA=?")
res, _ := stmt.Exec(id,
"研发部门",
"2012-12-09", time.Now())
resID, _ :=
res.LastInsertId()
fmt.Println(resID)
//or
// stmt, _ := db.Prepare("INSERT aaa_test (id,nameA,descA,createTime)values (?,?,?,?)")
// res, _ := stmt.Exec(17, "研发部门", "2012-12-09", time.Now())
// id, _ := res.LastInsertId()
// fmt.Println(id)
//or
// res, _ := db.Exec("INSERT aaa_test (id,nameA,descA)values (?,?,?)", 18, "研发部门", "2012-12-09")
// id, _ := res.LastInsertId()
// fmt.Println(id)
//or
// db.Exec("INSERT aaa_test (id,nameA,descA,createTime)values (?,?,?,?)", 14, "qwe", "2012-12-09", time.Now())
//or
//db.Exec("INSERT aaa_test SET id=?,nameA=?,descA=?,createTime=?", id, "研发部门", "写写代码", time.Now())
}
func delete(id int, db *
sql.DB) {
stmt, err := db.Prepare(
"delete from aaa_test where id=?")
checkErr(err)
res, err :=
stmt.Exec(id)
checkErr(err)
affect, err :=
res.RowsAffected()
checkErr(err)
fmt.Println("删除数据影响行数:" + strconv.FormatInt(affect,
10))
}
func update(id int, name
string, db *
sql.DB) {
stmt, err := db.Prepare(
"update aaa_test set nameA=? where id=?")
checkErr(err)
res, err :=
stmt.Exec(name, id)
checkErr(err)
affect, err :=
res.RowsAffected()
checkErr(err)
fmt.Println(affect)
}
sql.Open()函数用来打开一个注册过的数据库驱动,go-sql-driver中注册了mysql这个数据库驱动,第二个参数是DSN(Data Source Name),它是go-sql-driver定义的一些数据库链接和配置信息。它支持如下格式:
user@unix(/path/to/socket)/dbname?charset=utf8
user:password@tcp(localhost:5555)/dbname?charset=utf8
user:password@/dbname
user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname
db.Prepare()函数用来返回准备要执行的sql操作,然后返回准备完毕的执行状态。
db.Query()函数用来直接执行Sql返回Rows结果。
stmt.Exec()函数用来执行stmt准备好的SQL语句
我们可以看到我们传入的参数都是=?对应的数据,这样做的方式可以一定程度上防止SQL注入。
golang操作mysql数据库
标签:esc pat range host 数据 source hub 删除 open()