2016-09-15 62 views
2

我每2秒執行一次相同的命令。我想下面的代碼創建多個連接:創建單個或多個SQL連接多次執行相同的查詢會更好嗎?

[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())) 

有人可以解釋我是否需要修改此代碼還是這是好的嗎?

謝謝。

回答

2

由於您使用using statement子句,所以一旦完成該方法,資源就會被釋放並且連接將被關閉。所以每次當你調用相同的方法時,都會建立一個新的連接。當您使用using子句那麼它相當於下面的代碼:

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

另外請注意,你不需要顯式調用connection.Close();在你的方法using語句將照顧它。

0

你的方法很好,你只需要不需要connection.Close() Rahul描述。處理SQL對象時的語句是很好的做法。

您應該記住的是,ADO.NET連接池負責處理引用相同連接字符串的新對象,從而最大限度地減少打開連接所需的時間。

更多關於connection pooling可以找到Here