Golang QueryRow().如果行不存在,则Scan()返回错误

Ale*_*iak 12 go

我想从sql数据库中获取一行.我使用以下代码:

var name string
row := db.Con().QueryRow("SELECT name FROM users WHERE id = 2;")
err := row.Scan(&name)

if err != nil {
    // log the error
}
Run Code Online (Sandbox Code Playgroud)

例如:如果用户id=2不存在,则该方法Scan返回错误.

题:

当行不存在时,有没有办法避免这个错误?因为它绝对正常,我不想记录这样的错误.

我发现的唯一方法是使用Query而不是QueryRow,但它不方便,因为for rows.Next() { ..每次我想要获取单行时我都要添加.

Ale*_*ler 28

只需在登录前检查您不想记录的错误:

var name string
row := db.Con().QueryRow("SELECT name FROM users WHERE id = 2;")
err := row.Scan(&name)

if err != nil && err != sql.ErrNoRows {
    // log the error
}
Run Code Online (Sandbox Code Playgroud)