行。下一步转到列表的末尾,而不让您回到开头吗?我想运行一个查询,检查数据库中是否存在特定对象的数据。如果有该对象,我想对其进行更新。如果不存在,我想插入一个新行。所以我这样做:
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
}
我的for rows.Next()永远不会输入。如果我将
for rows.Next()
块移到if !rows.Next()
块上方,则它确实可以正常工作。那么,当您调用Next()再次读取查询时,是否会发生某些事情?提前致谢。 最佳答案
您可能想要这样的东西:
rows, err := db.Query(query)
if err != nil {
Error.Printf("error querying: %v", err)
}
shouldinsert := true
for rows.Next() {
shouldinsert = false
fmt.Println("-----")
// do update
}
if shouldinsert {
// insert new data
}