C ++ ADO连接池

时间:2014-06-24 18:13:39

标签: c++ sql database sybase connection-pooling

以前,我有自己的自定义ConnectionPool类,,但我发现只需将其包含在我的Connection字符串中,我就可以使用连接池功能。 (http://www.codeproject.com/Articles/17768/ADO-NET-Connection-Pooling-at-a-Glance

所以这是我到目前为止的简单测试代码:

int main(int argc, char** argv) {

    ::CoInitiazlie();

    char* ConnString = "Provider=ASEOLEDB; Data Source=xxx;  Min Pool Size=5;";

    _ConnectionPtr MyPointer = NULL;
    MyPointer.CreateInstance(__uuidof(Connection));
    MyPointer -> Open(ConnString, "myusername", "mypassword", adConnectUnspecified);

    //BREAK POINT....

    MyPointer -> Close();    

    ::CoUninitialize();

}

所以根据链接中的描述,这应该已经在BREAK POINT打开并保持池内的5个连接..(由于"最小池大小= 5"连接字符串内的选项)。

但是,当我打开会话管理器时,只看到只有1个连接打开..

我不确定我做错了什么..在Connection字符串中设置Min Pool Size究竟是如何创建连接池的?

由于

1 个答案:

答案 0 :(得分:1)

documentation似乎表明根据需要创建了连接,但Min Pool Size指示修剪后将保留的最小数字:

  

最小池大小(minPoolSize):

     

池中的最小连接数。当打开的连接空闲时,池将被修剪为此大小。默认值为零。

     

如果未指定最小大小,EAServer会根据需要打开连接以将池填充到最大大小。

也许你想设置Initial Pool Size

  

初始池大小(initialPoolSize)

     

在服务器启动时分配的池连接的初始数量。如果未设置,则默认值为0.