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

标签 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();
        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 statement子句所以一旦你完成了这个方法,资源就会被释放,连接也会被关闭。所以每次当你调用相同的方法时,都会建立一个新的连接。当您使用 using 子句时,它等同于以下代码:

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

另请注意,您无需在方法中显式调用 connection.Close();,因为 using 语句会处理它。

关于sql - 创建单个或多个 SQL 连接以多次执行相同的查询更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39508338/

相关文章:

c# - 我可以避免 Entity Framework 使用 SQL_VARIANT 来查询吗?

mysql - 我如何在插入之前编写触发器来检查重复项,检查 6000 多条记录

asp.net - COMPILATION debug=false 正在杀死我的 ASP.NET 站点

c# - Entity Framework 6 - 计时查询

SQL 组按动态列数排序的项目计数

sql - 从带有审计跟踪的表中获取原始内容和修改后的内容

mysql - Sql 选择顶部查询

asp.net - 在具有相同名称的不同 namespace 中招摇不同的类不起作用

c# - ResolveUrl 和 ResolveClientUrl 有什么区别?

sql - cfquery 文本编码问题