创建单个或多个SQL连接以多次执行同一查询更好吗?

创建单个或多个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

我每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()))
有人能解释一下我是需要修改这段代码还是这段代码好吗

谢谢。

因为您正在使用该子句,所以一旦使用完该方法,就会释放资源并关闭连接。因此,每次调用相同的方法时,都会建立一个新的连接。当您使用using子句时,它相当于以下代码:

SqlConnection connection = null;
try
{
    connection = new SqlConnection(connectionString);
}
finally
{
   if(connection != null)
        ((IDisposable)connection).Dispose();
}

还要注意的是,您不需要显式调用
connection.Close()
语句将在方法中使用进行编码。

您的方法很好,只是不需要连接。如Rahul所述,Close()<代码>在处理SQL对象时使用语句是一种很好的做法

您应该记住的是,ADO.NET连接池负责处理引用同一连接字符串的新对象,从而最大限度地减少打开连接所需的时间

有关连接池的更多信息,请参见