永发信息网

golang 连接、操作完mysql, 对mysql的连接会自动关闭,还是必须要手动关闭?

答案:3  悬赏:0  手机版
解决时间 2021-02-24 00:42
  • 提问者网友:焚苦与心
  • 2021-02-23 03:24
求教:这段代码对数据库的连接没有主动关闭(调用 db.Close()), 是不是Go的垃圾收集自动关闭释放资源呢? 还是必须手动调用db.Close()释放资源?[mw_shl_code=applescript,true]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) }}[/mw_shl_code]
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-02-23 03:38
当然可以不关闭,mysql过会都会自动关了的。但要养成手动关的习惯。
全部回答
  • 1楼网友:枭雄戏美人
  • 2021-02-23 05:51
Go垃圾回收是内存垃圾回收,分配给对象的内存回收。对于资源,必须手动释放,还给操作系统 再看看别人怎么说的。
  • 2楼网友:怙棘
  • 2021-02-23 05:12
不手动关的话,可能在你程序结束的时候,或者这个连接对象出了作用域的时候,golang会帮你自动关闭。。。不过还是支持手动关闭。。。这是好习惯。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯