我有 2 列如果表accounts:oid和balanceoid通過下一個(gè)代碼,我嘗試提取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)在第一個(gè)q.Next()我希望提取之后oid,在第二個(gè)之后提取balance。但每次在第一次q.Next()和第二次之后我只得到balance.我嘗試更改sqlstr為下一個(gè):sqlstr := `SELECT oid, balance ` + `FROM accounts ` + `WHERE oid=` + id + `;`但我仍然無法提取oid。
1 回答

鴻蒙傳說
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
試試這個(gè)q.Scan(&_id, &bal)
,func (*Row) Scan有這個(gè)簽名:
func?(r?*Row)?Scan(dest?...interface{})?error
它期望指向?qū)⒋鎯?chǔ)查詢數(shù)據(jù)的值的指針。
如果您只查詢單行,則可以使用func (*DB) QueryRow()。然后你的代碼將簡(jiǎn)化為
row?:=?db.QueryRow(sqlstr) err?:=?row.Scan(&_id,?&bal) //?err?will?be?sql.ErrNoRows?if?no?rows?have?been?selected
- 1 回答
- 0 關(guān)注
- 189 瀏覽
添加回答
舉報(bào)
0/150
提交
取消