登录
首页 >  Golang >  Go问答

修正 stmt.Query() 中的单值上下文多值问题

来源:stackoverflow

时间:2024-03-07 12:51:19 398浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《修正 stmt.Query() 中的单值上下文多值问题》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我使用下面的代码遇到了上述问题

stmt, err2 := db.Prepare( "SELECT COUNT(*) FROM  xyz WHERE product_id=? and chart_number=?")
    rows, err2 := stmt.Query( bidStatusReqVal.ProductId,bidStatusReqVal.ChartNumber).Scan(&count)

正确答案


query(...).scan(...) 无效,因为 query 返回两个 个值,并且调用链要求前一个调用仅返回一个 > 价值。在返回的 rows 上调用 scan,或使用 queryrow(...).scan(...),仅将 err 作为返回目标。

rows, err := stmt.query(bidstatusreqval.productid, bidstatusreqval.chartnumber)
if err != nil {
    return err
}
defer rows.close()

for rows.next() {
    if err := rows.scan(&count); err != nil {
        return err
    }
}
if err := rows.err(); err != nil {
    return err
}

// ...

在查询仅返回单行的情况下,例如select ... limit 1,或 select count(*) ... 就像您的情况一样,使用 queryrow 更方便。

err := stmt.QueryRow(bidStatusReqVal.ProductId, bidStatusReqVal.ChartNumber).Scan(&count)
if err != nil {
    return err
}

// ...

到这里,我们也就讲完了《修正 stmt.Query() 中的单值上下文多值问题》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>