Haskell:HDBC,连接状态和可能的池

r.s*_*cky 6 haskell

说,我有一个简单的应用程序,它使用HDBC与数据库进行交互.它可以是一个快照应用程序或命令行应用程序.我想要一个关于此的通用视图 - 不是快照或任何特定的.一个很好的例子是"真实世界哈斯克尔"的第22章.

因此,我会将所有与SQL相关的函数(如connect,saveArticle,getArticle等)隐藏在单独的DB.hs文件中.所有DB函数都将连接句柄作为参数.

现在,我将如何启动连接并将其置于某种状态,以便所有这些数据库函数只使用它而无需单独启动连接?这可能吗?也许我在思考错误或考虑OO概念但是......我想"初始化"我的连接(就像你在OO中初始化一个对象一样).我不希望每个数据库函数都创建和关闭新连接.

我是否必须创建一个池并将池作为参数而不是连接句柄传递给函数?这样做的最简单的例子是什么?

无论是游泳池还是连接手柄,我如何将其置于一个状态,以便我的功能在需要时抓住它并且不会一直重复"打开"和"关闭"?如果是,它是如何正确完成的?

我是否需要创建一个池并将其置于一个状态,以便函数只查询池以获取来自全局状态的连接?再一次,例子将非常感激.

谢谢.

scl*_*clv 1

您可能想看看 bos 的资源池库。