Golang数据表增删改查基本操作
基本数据表操作
插入数据
func insertData(db *sql.DB) {
// 返回值准备之后的查询and命令来使用。
stmt, err := db.Prepare("INSERT INTO userinfo SET username=?,department=?,created=?")
checkerr(err)
// 执行语句
res, err := stmt.Exec("肥猪之家", "幼儿园", "2020-02-09")
checkerr(err)
//返回一个数据库回应的命令的数字, 一般是一个自增数列的数字
// 比如本table中有UID是自增的,则目前增加的这一条数据对应的UID是8,则返回的id是8
id, err := res.LastInsertId()
checkerr(err)
fmt.Println(id)
}
[Running] go run "/home/yang/go/src/demo/DB/connection/conn.go" 成功连接数据库! 3
-
db.Prepare("INSERT INTO userinfo SET username=?,department=?,created=?")
这段语句只需要在后面的执行过程,一一为每个?传值即可。Prepare是为了语句复用, 后面每次使用只需要不断更新? 对应的值
更新数据
func updateData(db *sql.DB) {
// 修改id为?的数据的username为?
stmt, err := db.Prepare("update userinfo SET username=? where uid=?")
checkerr(err)
res, err := stmt.Exec("三只眼", 3)
checkerr(err)
// 返回上面的stmt.Exce成功改变了几条数据
num, err := res.RowsAffected()
checkerr(err)
fmt.Println(num)
}
成功连接数据库! 0
查询数据
func selectData(db *sql.DB) {
// 返回查询到的所有行
rows, err := db.Query("SELECT * FROM userinfo")
checkerr(err)
// 一行一行地循环显示
// rows.Next() 查看是否还有下一行, 有则返回为真否则假。为后面的rows.Scan()做准备
for rows.Next() {
var uid int
var username string
var department string
var createds string
// 由刚才的rows.Next()获得当前行后, 将当前行的各列填入对应参数中
// 每次调用Scan方法都必须在前面调用Next方法
err = rows.Scan(&uid, &username, &department, &createds)
checkerr(err)
fmt.Printf("%d,%s,%s,%s
", uid, username, department, createds)
}
}
成功连接数据库! 1,肥猪之家,幼儿园,2020-02-09 2,肥猪之家,幼儿园,2020-02-09 3,三只眼,幼儿园,2020-02-09 4,肥猪之家,幼儿园,2020-02-09
删除数据
func deleteData(db *sql.DB) {
stmt, err := db.Prepare("delete from userinfo where username=?")
checkerr(err)
res, err := stmt.Exec("肥猪之家")
checkerr(err)
fmt.Println(res.RowsAffected())
}
成功连接数据库! 3 <nil>
