golang 连接、操作完mysql, 对mysql的连接会自动关闭,还是必须要手动关闭?
怪我咯
怪我咯 2017-04-17 11:03:43
0
4
679

参考 astaxie 的代码

import (
    _ "code.google.com/p/go-mysql-driver/mysql"
    "database/sql"
    "fmt"
    //"time"
)

func main() {
    db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")
    checkErr(err)

    //插入数据
    stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
    checkErr(err)

    res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")
    checkErr(err)

    id, err := res.LastInsertId()
    checkErr(err)

    fmt.Println(id)

    //删除数据
    stmt, err = db.Prepare("delete from userinfo where uid=?")
    checkErr(err)

    res, err = stmt.Exec(id)
    checkErr(err)

    affect, err = res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

}

func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}

求教:这段代码对数据库的连接没有主动关闭(调用 db.Close()), 是不是Go的垃圾收集自动关闭释放资源呢? 还是必须手动调用db.Close()释放资源?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(4)
刘奇

數據庫的鏈接必須自己手動關閉的,這個和打開文件一樣

左手右手慢动作

Go垃圾回收是內存垃圾回收,分配給對象的內存回收。對於資源,必須手動釋放,還給操作係統

Peter_Zhu

不手動關的話,可能在你程序結束的時候,或者這個連接對象出了作用域的時候,golang會幫你自動關閉。。。不過還是支持手動關閉。。。這是好習慣。。。

小葫芦

當然可以不關閉,mysql過會都會自動關了的。但要養成手動關的習慣。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板