第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何處理sql請求中的錯誤

如何處理sql請求中的錯誤

Go
森林海 2023-08-07 10:58:54
我正在使用 Go 開發(fā)一個項目。我正在嘗試通過查詢 Postgres 數(shù)據(jù)庫來驗證用戶的會話。當(dāng)我得到匹配時,我想返回 true,當(dāng)我沒有匹配時,我想返回 false。問題是,當(dāng)我沒有匹配項時,我的程序會拋出錯誤。我還不確定如何在 Go 中捕獲這些錯誤,或者是否有更智能的方法來運行查詢。func confirmUser(userID string, session string) bool {    sqlStatement := `SELECT u.id FROM users u INNER JOIN user_sessions s ON u.id = s.userid WHERE u.id = $1 AND s.session = $2`    id := 0    err := db.QueryRow(sqlStatement, userID, session).Scan(&id)    if err != nil {        panic(err)        return false    }    fmt.Println("Found:", id)    return true}我的 db 變量是全局變量,因為我在很多地方使用它。我認為問題出在.Scan()電話上,但我不確定有更好的方法來解決這個問題。在 PHP 中,我將檢查請求是否已成功發(fā)送,然后檢查返回的行數(shù)。我還不知道如何在 Go 中做同樣的事情。
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經(jīng)驗 獲得超3個贊

panic()退出程序。在你的例子中return false永遠不會達到。在這種情況下,您可以log.Println(err)然后return false。但老實說,在像這樣的 go 函數(shù)中,返回 bool 和 and 錯誤是很好的做法。連接失敗、sql 錯誤、est 等錯誤可能會從數(shù)據(jù)庫返回并需要處理。


func confirmUser(userID string, session string) (error, bool) {


    sqlStatement := `SELECT u.id FROM users u INNER JOIN user_sessions s ON u.id = s.userid WHERE u.id = $1 AND s.session = $2`

    id := 0

    err := db.QueryRow(sqlStatement, userID, session).Scan(&id)

    if err != nil {

        // if no rows there is no session

        if err == sql.ErrNoRows {

           return nil, false

        }

        // an error other than no rows was returned, return with error

        return err, false

    }

    fmt.Println("Found:", id)

    return nil, true

}

在你的函數(shù)上,confirmUser像這樣調(diào)用你的函數(shù)


err, valid := confirmUser("myuserid", "sessionstring")

if err != nil {

    return err.Error()

}


if !valid (

    return "user not valid"

}


// user is valid go on


查看完整回答
反對 回復(fù) 2023-08-07
?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

測試返回的錯誤值sql.ErrNoRows



查看完整回答
反對 回復(fù) 2023-08-07
  • 2 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號