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

时间:2017-03-29 11:06:04

标签: 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
}

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

问题:

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

我找到的唯一方法是使用Query而不是QueryRow,但这不方便,因为每次我想要获取单行时都必须添加for rows.Next() { ..。< / p>

2 个答案:

答案 0 :(得分:22)

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

imports: [
    BrowserModule,
    AuthModule,
    RouterModule,
    ChildRoutingModule, 
    AppRoutingModule,
  ],

答案 1 :(得分:0)

您可以只扫描返回的行,我首先检查它是否为空。

if row != nil {
  err := row.Scan()
}

我认为您也可以将pgx v4用于您的数据库驱动程序,并且它不会作为错误不返回任何行。