以前,我有自己的自定义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究竟是如何创建连接池的?
由于
答案 0 :(得分:1)
documentation似乎表明根据需要创建了连接,但Min Pool Size
指示修剪后将保留的最小数字:
最小池大小(minPoolSize):
池中的最小连接数。当打开的连接空闲时,池将被修剪为此大小。默认值为零。
如果未指定最小大小,EAServer会根据需要打开连接以将池填充到最大大小。
也许你想设置Initial Pool Size
:
初始池大小(initialPoolSize)
在服务器启动时分配的池连接的初始数量。如果未设置,则默认值为0.