我想从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>
答案 0 :(得分:22)
在记录之前,只需检查您不想记录的错误:
imports: [
BrowserModule,
AuthModule,
RouterModule,
ChildRoutingModule,
AppRoutingModule,
],
答案 1 :(得分:0)
您可以只扫描返回的行,我首先检查它是否为空。
if row != nil {
err := row.Scan()
}
我认为您也可以将pgx v4用于您的数据库驱动程序,并且它不会作为错误不返回任何行。