我有一个多线程服务器,它使用一个MSSQL,每个客户端都应该有权访问。我想使用连接池,我也在使用它:
public static void DBconn()
{
SqlConnection pripojeni = new SqlConnection();
pripojeni.ConnectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=XYZ;Trusted_Connection=True;Min Pool Size=20";
}
如果连接字符串表示“min pool”,对象是否会持久存储在内存中(而不是对象本身而不是打开的连接)?或者在完成这种方法后它会消失吗?感谢
答案 0 :(得分:6)
您应该为每个连接使用新的SqlConnection
对象,而不是在静态构造函数中创建一个。当您创建的每个连接使用相同的连接字符串时,连接池都有效(您应该将其存储在配置文件中,如web.config或app.config)。
每次只创建并打开一个SqlConnection
对象,记得在最后关闭/处置它,连接池将确保它重新使用现有的开放连接。
希望有所帮助!
答案 1 :(得分:0)
由于您在此方法中新声明了SqlConnection对象,因此在方法结束后它将消失。
试着继续连接:
public static class PerstistendDB
{
// Readonly so it can't be destroyed!
public static readonly System.Data.SqlClient.SqlConnection pripojeni = new System.Data.SqlClient.SqlConnection(
"Data Source=localhost\\SQLEXPRESS;Initial Catalog=XYZ;Trusted_Connection=True;Min Pool Size=20");
}
注意:我同意Kieren的意见,如果你一直打开你的连接,你就会堵塞数据库,每次打开和关闭都会(几乎总是)更好。