我需要检查查询是否返回true或false。如果返回false,我希望它出错。这是我的代码:
func (dr *dbrepo) checkIfUnique(datacenterstring) error {
statement := `select exists(select 1 from source where datacenter = $3)`
_, checkIfExists := dr.db.Query(statement)
if checkIfExists != nil {
log.Print("Error is not unique", checkIfExists)
return checkIfExists
}
return nil
}
问题是:我想我需要将checkIfExists
从一行转换为布尔值,然后查看它是对还是错。但是我不确定该怎么做。有任何想法吗?有更好的方法吗?
答案 0 :(得分:2)
Query()
不返回true或false。它返回两个值:*Rows
和error
。
func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {
...
}
在您的情况下:checkIfExists
是错误。遇到此错误,您已经可以知道查询成功还是失败。像您一样:
if checkIfExists != nil {
return checkIfExists
}
如果您需要更多信息(例如,查询所查询的行),则需要用变量替换_
。我们将其命名为rows
,然后使用rows.Scan()
将列中的数据复制到目的地。有关更多信息,请参见database/sql
docs。