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>
经验分享 程序员 微信小程序 职场和发展