private static IList<SqlConnection> connection = new List<SqlConnection>(); public static SqlConnection Connection
{
get
{
string connectionString = ConfigurationSettings.AppSettings["connectstr"];
int a = 0;
if (connection.Count == 0)
{
for (int i = 0; i < 10; i++)
{
SqlConnection sqlcon = new SqlConnection(connectionString);
sqlcon.Open();
connection.Add(sqlcon);
}
}
else
{
for (; a < connection.Count; a++)
{
if (connection[a].State == System.Data.ConnectionState.Closed)
{
connection[a].Open();
break;
}
else if (connection[a].State == System.Data.ConnectionState.Broken)
{
connection[a].Close();
connection[a].Open();
break;
}
}
if (a == connection.Count && a < 50)
{
SqlConnection sqlcon = new SqlConnection(connectionString);
sqlcon.Open();
connection.Add(sqlcon);
}
}
return connection[a];
}
}自己想的将数据库连接放到list里面
刚写出来
请各位指点下
哪里不对还烦请指出来并提供改进的方案哈
{
get
{
string connectionString = ConfigurationSettings.AppSettings["connectstr"];
int a = 0;
if (connection.Count == 0)
{
for (int i = 0; i < 10; i++)
{
SqlConnection sqlcon = new SqlConnection(connectionString);
sqlcon.Open();
connection.Add(sqlcon);
}
}
else
{
for (; a < connection.Count; a++)
{
if (connection[a].State == System.Data.ConnectionState.Closed)
{
connection[a].Open();
break;
}
else if (connection[a].State == System.Data.ConnectionState.Broken)
{
connection[a].Close();
connection[a].Open();
break;
}
}
if (a == connection.Count && a < 50)
{
SqlConnection sqlcon = new SqlConnection(connectionString);
sqlcon.Open();
connection.Add(sqlcon);
}
}
return connection[a];
}
}自己想的将数据库连接放到list里面
刚写出来
请各位指点下
哪里不对还烦请指出来并提供改进的方案哈
问题在于该怎么该才好
劳烦各位
{
//do something
}
你的实现是想做个线程池,但是这么处理实际上是被你自己限制了程序的并发能力.
{
for (int i = 0; i < 10; i++)
{
SqlConnection sqlcon = new SqlConnection(connectionString);
sqlcon.Open();
connection.Add(sqlcon);
}
}
第一次请求连接的时候,你创建10个后,全都打开啊?
是不是你的应用要求这样,如果不是必须,还是只打开一个,返回吧。