我每2秒执行一次相同的命令。我认为以下代码会创建多个连接:
[System.Web.Services.WebMethod]
public static int getActivity()
{
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString()))
{
connection.Open();
using (var cmd = new SqlCommand("SELECT TOP 1 ValueX FROM TABLE WHERE ID= 2 AND EVENTID = 2 ORDER BY DATE DESC", connection))
{
var x = cmd.ExecuteScalar();
int Result;
if (x != null)
{
Result = int.Parse(x.ToString());
Console.WriteLine("USER ACTIVITY : " + Result);
}
else
{
Result = -999;
}
connection.Close();
return Result;
}
}
}
如果我多次调用此方法以下代码是进行多连接还是单连接?
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString()))
有人可以解释我是否需要修改此代码或这是一个好的吗?
感谢。
答案 0 :(得分:2)
由于您使用的是using statement子句,因此一旦完成该方法,就会释放资源并关闭连接。因此,每次调用相同的方法时,都会建立新的连接。当您使用using子句时,它等同于以下代码:
listr=[]
for number in range(96):
listr.append(number)
另请注意,您无需在方法中明确调用listr = range(96) # in Python2
# or
listr = list(range(96)) # in Python3
,因为SqlConnection connection = null;
try
{
connection = new SqlConnection(connectionString);
}
finally
{
if(connection != null)
((IDisposable)connection).Dispose();
}
语句会处理它。
答案 1 :(得分:0)
你的方法很好,你只需要Rahul所描述的connection.Close()
。处理SQL对象时的Using
语句是一种很好的做法。
您应该记住的是,ADO.NET连接池负责处理引用相同连接字符串的新对象,从而最大限度地缩短打开连接所需的时间。
有关connection pooling
的更多信息,请Here