创建单个或多个SQL连接以多次执行同一查询更好吗?
我每2秒钟执行一次相同的命令。我认为以下代码创建了多个连接:创建单个或多个SQL连接以多次执行同一查询更好吗?,sql,asp.net,sql-server,database-connection,webmethod,Sql,Asp.net,Sql Server,Database Connection,Webmethod,我每2秒钟执行一次相同的命令。我认为以下代码创建了多个连接: [System.Web.Services.WebMethod] public static int getActivity() { using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString())) { connection.Open
[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()))
有人能解释一下我是需要修改这段代码还是这段代码好吗
谢谢。因为您正在使用该子句,所以一旦使用完该方法,就会释放资源并关闭连接。因此,每次调用相同的方法时,都会建立一个新的连接。当您使用using子句时,它相当于以下代码:
SqlConnection connection = null;
try
{
connection = new SqlConnection(connectionString);
}
finally
{
if(connection != null)
((IDisposable)connection).Dispose();
}
还要注意的是,您不需要显式调用
connection.Close()使用
语句将在方法中使用进行编码。您的方法很好,只是不需要连接。如Rahul所述,Close()<代码>在处理SQL对象时使用语句是一种很好的做法
您应该记住的是,ADO.NET连接池负责处理引用同一连接字符串的新对象,从而最大限度地减少打开连接所需的时间
有关连接池的更多信息,请参见