我有 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
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消