0
does rows.Next轉到列表的末尾,不讓你回到開頭?我想運行一個查詢來檢查數據庫中是否有特定對象的數據。如果有這個對象,我想更新它。如果它不在那裏,我想插入一個新的行。所以我這樣做:golang sqldatabase rows.Next
rows, err := db.Query(query)
if err != nil {
Error.Printf("error querying: %v", err)
}
if !rows.Next() {
// insert new data
}
它的作品就像我期望的那樣。但如果我這樣做,而不是在更多的邏輯的片斷的結尾:
rows, err := db.Query(query)
if err != nil {
Error.Printf("error querying: %v", err)
}
if !rows.Next() {
// insert new data
}
for rows.Next() {
fmt.Println("-----")
// do update
}
我對rows.Next()永遠不會進入。如果我將for rows.Next()
塊移動到if !rows.Next()
塊之上,它的確可以正常工作。那麼當你調用Next()時會發生什麼,你必須再次從查詢中讀取?提前致謝。
'rows.Next()'推進的結果集索引,如果它可以。如果成功則返回true,如果失敗則返回false(即沒有更多數據)。沒有辦法檢查是否有更多的數據沒有推進該索引,所以除了檢查是否有數據之外,第一次調用'rows.Next()'會推進該索引。如果你只返回一行,你的條件將是假的(有數據),但是你的循環不會發生(第一行之後沒有更多的數據,這是條件超前檢查)。 – Kaedys