我们是否应该关闭Golang中的DB&.prepare()?

时间:2014-12-04 06:47:50

标签: sql go prepared-statement

this教程显示rows.Closed()必须在rows来自stmt.Query()的情况下调用,stmt.Closed()也应调用stmt来自db.Prepare()

// inside a function
stmt, err := db.Prepare(cmd) // cmd is SQL string
Check(err)
// should we add: defer stmt.Close()
rows, err := stmt.Query(params) // params is map/interface{}
defer rows.Close()
Check(err)

2 个答案:

答案 0 :(得分:4)

简短的回答是肯定的。你应该调用stmt.Close();

可以找到长答案in this google groups thread.

答案 1 :(得分:0)

使用如下

// inside a function
stmt, err := db.Prepare(cmd) // cmd is SQL string
if err != nil {
    println(err.Error())
}
defer stmt.Close()
rows, err := stmt.Query(params) // params is map/interface{}

if err != nil {
    println(err.Error())
}