为了账号安全,请及时绑定邮箱和手机立即绑定

Go Lang,Postgres:扫描后无法获取 oid

Go Lang,Postgres:扫描后无法获取 oid

Go
慕姐4208626 2023-05-08 15:51:15
我有 2 列如果表accounts:oid和balanceoid通过下一个代码,我尝试提取balance:// variable `id` comes from an another partsqlstr := `SELECT * ` +    `FROM accounts ` +    `WHERE oid=` + id + `;`q, err := db.Query(sqlstr)if err != nil {    fmt.Println("Error: GetAccount \n", err)    return Account{}, err}defer q.Close()var _id stringvar bal float64q.Next()q.Scan(&_id)fmt.Println("_id ", _id)q.Next()q.Scan(&bal)fmt.Println("bal ", bal)在第一个q.Next()我希望提取之后oid,在第二个之后提取balance。但每次在第一次q.Next()和第二次之后我只得到balance.我尝试更改sqlstr为下一个:sqlstr := `SELECT oid, balance ` +    `FROM accounts ` +    `WHERE oid=` + id + `;`但我仍然无法提取oid。
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

试试这个q.Scan(&_id, &bal),func (*Row) Scan有这个签名:

func (r *Row) Scan(dest ...interface{}) error

它期望指向将存储查询数据的值的指针。

如果您只查询单行,则可以使用func (*DB) QueryRow()。然后你的代码将简化为

row := db.QueryRow(sqlstr)
err := row.Scan(&_id, &bal)
// err will be sql.ErrNoRows if no rows have been selected


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信