2011-07-01 68 views
2

我想聲明1 3 :(問題的更新語句

public static void UpdateThreadView(int threadID) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("UPDATE dbo.Threads"); 
    sb.Append(" SET Views=(Views+1)"); 
    sb.Append(" WHERE [email protected]"); 

    string myConnectionString = AllQuestionsPresented.connectionString; 

    using (SqlConnection myConnection = new SqlConnection(myConnectionString)) 
    { 
     myConnection.Open(); 
     SqlCommand sqlCommand = new SqlCommand(sb.ToString(), myConnection); 
     sqlCommand.Parameters.Add("@ThreadID", SqlDbType.Int); 
     sqlCommand.Parameters["@ThreadID"].Value = threadID; 
     sqlCommand.ExecuteNonQuery(); 

    } 
} 
+0

這是ASP .NET Web窗體?你在調用這個方法的哪一部分頁面生命週期? – Yuck

+5

這個SQL代碼基本上是不相關的(它看起來很好)。請使用調用此方法的ASP.NET代碼編輯您的問題;這很可能是問題出在哪裏。 –

+0

可能在哪裏條件符合3行更新3行 – rahularyansharma

回答

2

每次我進入它似乎更新特定page..But時間更新數據庫設置在你的代碼中設置斷點和在Visual Studio調試器由於回發事件的組合運行。

我敢說這個被調用的3倍。

另外,您可以使用SQL事件探查器,看看是否多次更新發生。

+0

對不起,我是愚蠢的,你是對的..我把調用方法裏面!ispostback ..謝謝大家 –

+1

不要猜測爲什麼該代碼不起作用。調試。 +1 –

1

火花建議真的很好。學會了解調試器。你可以用斷點和立即窗口做一些真正的甜事,這將幫助你變得更有效率。

在現場說明。你如何使用Stringbuilder並不是非常高效。一般來說,除非你在一個循環中做事,否則避免使用stringbuilder,因爲它有一些開銷。

var str = "UPDATE dbo.Threads" 
      + " SET Views=(Views+1)" 
      + " WHERE [email protected]"; 

這種類型的代碼將被編譯器優化爲一個字符串分配。我創建了一個小測試,顯示在1000000次迭代中,stringbuilder需要467毫秒,而字符串連接需要8個。它不會殺死你的應用程序,但可能是很好的知道。