rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > '1999-01-08 04:05:06';`, map[string]interface{}{})上面的代碼給了我以下錯誤:unexpected `:` while reading named param at 74
panic: runtime error: invalid memory address or nil pointer dereference這很奇怪,如下所示,rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > '1999-01-08';`, map[string]interface{}{})運(yùn)行無故障。兩者的區(qū)別在于增加了輸入的時間。我求助于使用而不是解決我的問題db.Query的 sqlx 方法。db.NamedQuery我現(xiàn)在看到我應(yīng)該將我的輸入作為參數(shù)傳遞給 NamedQuery。通常如何編寫這樣的查詢,為什么要使用 NamedQuery 而不是 Query?
1 回答

眼眸繁星
TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊
為什么要使用 NamedQuery 而不是 Query?
使用命名參數(shù)的查詢更容易被人類解析。
通常如何編寫這樣的查詢
layout := "2006-01-02 15:04:05"
ts, err := time.Parse(layout, "1999-01-08 04:05:06")
if err != nil {
return err
}
arg := map[string]interface{}{"ts": ts}
rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > :ts`, arg)
if err != nil {
return err
}
- 1 回答
- 0 關(guān)注
- 96 瀏覽
添加回答
舉報
0/150
提交
取消