我在WebService中创建数据库连接串!首先我会把连接串保存到一个静态变量中,例如:
public static MySqlConnection myConn = new MySqlConnection(ConfigurationManager.AppSettings["CONN_STRING"]);然后我们在每个函数里面都开始
try
{
myConn.Open()
}catch
{
}
finally
{
myConn.Close()
}开进行数据库打开和关闭操作!我的问题是:如果多人同时访问的时候,是共享一个连接,还是每个人都是重新打开一个连接!
如果是前者,那么第一个人没有关闭的时候,那么第二人进来,肯定就会仍出异常出来?
我只所以想把连接串放到一个静态变量里面,因为WebService经常被调用,一般建立数据库连接都是很慢的!所以我希望是先建立一个连接放在那边!加快执行速度!请问一下是否合理
public static MySqlConnection myConn = new MySqlConnection(ConfigurationManager.AppSettings["CONN_STRING"]);然后我们在每个函数里面都开始
try
{
myConn.Open()
}catch
{
}
finally
{
myConn.Close()
}开进行数据库打开和关闭操作!我的问题是:如果多人同时访问的时候,是共享一个连接,还是每个人都是重新打开一个连接!
如果是前者,那么第一个人没有关闭的时候,那么第二人进来,肯定就会仍出异常出来?
我只所以想把连接串放到一个静态变量里面,因为WebService经常被调用,一般建立数据库连接都是很慢的!所以我希望是先建立一个连接放在那边!加快执行速度!请问一下是否合理
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> The connection is already open
这样做:public static string myConnString = ConfigurationManager.AppSettings["CONN_STRING"];public void MyWebMethod()
{
MySqlConnection myConn = new MySqlConnection(myConnString);
myConn.Open();
try
{
...
}
finally
{
myConn.Close();
}
}dotNet自己有连接池,会为你管理好这些连接的。
{
lock(myConn)
{
try
{
...
}
finally
{
...
}
}
}
当然是等待,所以用lock会导致效率的降低。