gpt4 book ai didi

Golang sqldatabase 行.Next

转载 作者:数据小太阳 更新时间:2023-10-29 03:26:04 25 4
gpt4 key购买 nike

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
}

My for rows.Next() 永远不会被输入。如果我将 for rows.Next() block 移动到 if !rows.Next() block 上方,它会按预期工作。那么,当您调用 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
}

关于Golang sqldatabase 行.Next,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com