2

我正在使用杜松子酒框架。我在这样的主函数中打开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 传递该 db 值PostSignin(c *gin.Context)

这样我就可以避免每次在函数中打开和关闭数据库。

更新:我正在使用 go-sqlite3 包。

谢谢!

4

1 回答 1

2

假设您在 中初始化了您的 sql 客户端db,然后,您可以将其传递给不同的路由

r.GET("/", GetHomePageHandler(&db))

在您的 GetHomePageHandler 中:

func GetHomePageHandler(sqldb *SQLiteConn) func (*gin.Context) {
    return  func (*gin.Context) {
      . . .
    }
}

*SQLiteConn您的 sql 数据库实例的类型在哪里。我不知道您当前使用的是哪个包,所以这只是一个示例。

您还可以在此答案中找到更优雅的解决方法,

于 2017-06-04T11:00:01.060 回答