我正在使用 goLang lib/pq 驱动程序并尝试从数据库中获取行。
rows, err := db.Query("select id, name from mytable limit 5")
我想要一个 if else 子句来检查结果集中是否有行,我这样做了:
if(!rows.Next()){
log.Printf("no rows returned")
} else {
log.Printf("rows returned")
}
但这总是让我少返回 1 条记录,我认为这是因为if
子句它会跳过一条记录,因为一旦我删除if
子句我正确地得到了所有记录。如何在不执行另一个查询的情况下知道从选择查询返回的行数?
当您与Rows https://golang.org/pkg/database/sql/#Rows对象,没有任何辅助方法可以一步为您提供总行数。
一个简单但速度较慢的解决方案是使用增量变量来存储行数来迭代所有结果:
// error handling omitted
rows, _ := db.Query("SELECT * FROM table")
defer rows.Close()
counter := 0
for rows.Next() {
// you can even scan+store the result if you need them later
counter++
}
fmt.Println("we have", counter, "rows")
否则,如果您的目标只是“计算”行数,请使用更专用的查询QueryRow https://golang.org/pkg/database/sql/#DB.QueryRow
// error handling omitted
var counter int
db.QueryRow("SELECT count(*) FROM table").Scan(&counter)
fmt.Println("we have", counter, "rows")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)