无法获取更新查询的数据库响应,以便在go中进一步执行

时间:2014-08-22 15:06:16

标签: database go response

我想更新远程数据库表中的数据并执行更多任务但无法执行此操作。

使用与插入查询相同的代码,我能够在同一个表中插入值,我可以非常快速地获得响应并继续执行其他任务。 但是在更新查询中,它会更新表中的值,但无法继续进行。

以下是我尝试的示例代码:

package src

import (
    "github.com/go-sql-driver/mysql"
    "database/sql"
    "fmt"
    "log"
    "net"
)

const (
    DB_NAME = "test_db"
    DB_HOST = "remote db ip address:port"
    DB_USER = "username"
    DB_PASS = "password"
)

const (
    bufferSize int    = 1024
    port       string = ":23456"
)

func main() {

    udpAddr, err := net.ResolveUDPAddr("udp6", port)

    var s Server
    s.conn, err = net.ListenUDP("udp4", udpAddr)

    fmt.Println("Trying to connect remote db")

    dsn := DB_USER + ":" + DB_PASS + "@" + DB_HOST + "/" + DB_NAME + "?charset=utf8"
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }

    defer db.Close()

    fmt.Println("Connected db")

    rows, err := db.Query("UPDATE user_name_table SET user_id = ? WHERE user_name = ? ", "abcd", "admin")
    defer rows.Close()

    if err != nil {

        log.Fatal(err)
        fmt.Println("error in updating values")

    } else {

        fmt.Println("updated successfully in db")

    }

    // not coming here for doing further tasks

}

另外,我已经尝试从php webservice更新db表并且它工作正常但是在更新值之后也没有使用它给出响应,也没有进一步移动。

请帮帮我。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

这是因为log.Fatal(err)会调用os.Exit(1)。换句话说,它会在err != nil时终止您的计划。

答案 1 :(得分:0)

找到解决方案。只需删除不需要的行以返回响应以更新查询,一切正常。

_, err := db.Query("UPDATE user_name_table SET user_id = ? WHERE user_name = ? ",   "abcd", "admin")
    // defer rows.Close()