作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 gin 框架。我在主函数中像这样打开 sqlite 数据库
func main() {
...
db, err := sql.Open("sqlite3", "./libreread.db")
CheckError(err)
defer db.Close()
...
}
我在主函数中有这些路由器处理程序。
...
r.GET("/", GetHomePage)
r.GET("/signin", GetSignIn)
r.POST("/signin", PostSignIn)
...
如何通过路由器处理程序 func PostSignin(c *gin.Context)
传递该 db 值?
这样我就可以避免每次都在函数中打开和关闭数据库。
更新:我正在使用 go-sqlite3 包。
谢谢!
最佳答案
假设你在 db
中初始化了你的 sql 客户端,然后,你可以将它传递给不同的路由
r.GET("/", GetHomePageHandler(&db))
在您的 GetHomePageHandler 中:
func GetHomePageHandler(sqldb *SQLiteConn) func (*gin.Context) {
return func (*gin.Context) {
. . .
}
}
其中 *SQLiteConn
是您的 sql 数据库实例的类型。我不知道您当前使用的是哪个软件包,所以这只是一个示例。
您还可以找到更优雅的解决方法in this answer ,
关于sqlite - 戈兰/ Gin : How to Pass db to router functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44352656/
我是一名优秀的程序员,十分优秀!