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>