如何对数据库进行查询,然后检查结果

时间:2019-02-13 18:14:11

标签: postgresql go

我需要检查查询是否返回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从一行转换为布尔值,然后查看它是对还是错。但是我不确定该怎么做。有任何想法吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

Query()不返回true或false。它返回两个值:*Rowserror

func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {
    ...
}

在您的情况下:checkIfExists是错误。遇到此错误,您已经可以知道查询成功还是失败。像您一样:

if checkIfExists != nil {
    return checkIfExists
}

如果您需要更多信息(例如,查询所查询的行),则需要用变量替换_。我们将其命名为rows,然后使用rows.Scan()将列中的数据复制到目的地。有关更多信息,请参见database/sql docs