2012-07-19 69 views
0

我想檢查我的查詢是否在方法ExecuteNonQuery()正在運行。 這裏是我在我的WCF服務代碼:如何檢查我的查詢是否正在ExecuteNonQuery()方法中運行?

public string Execute(string query){ 
      string connectionString = ConfigurationManager.ConnectionStrings["ConnWf"].ConnectionString; 
      string hasil = "ERROR"; 
      using (SqlConnection conn = new SqlConnection(connectionString)) 
      { 
       conn.Open(); 
       string cmdStr = String.Format(query); 
       SqlCommand command = new SqlCommand(cmdStr, conn); 
       command.Connection.Open(); 
       command.ExecuteNonQuery(); 

       //I want to check here.. 
       if (command.ExecuteNonQuery().HasRows) //it doesn't works :(
       { 
        hasil = "SUCCESS \n Row Affected: " + rd.RecordsAffected; 

       } 
       else 
       { 
        hasil = "FAILED \n Row Affected: " + rd.RecordsAffected; 
       } 
       conn.Close(); 
      } 
      return "Query: "+query+"\n Status: "+hasil; 
     } 

回答

3

ExecuteNonQuery()返回一個整數,這將是受您的SQL語句行的總和。即,如果SSMS返回:

(614 row(s) affected) 

(123 row(s) affected) 

ExecuteNonQuery()將返回737

所以,你可以使用這樣的事情。

try 
{ 
    hasil = string.Format("Success \n Rows Affected: {0}", command.ExecuteNonQuery()); 
} 

catch 
{ 
    hasil = "Failed \n Rows Affected: 0"; 
} 

你也應該考慮爲您的SqlCommand以及您的SqlConnection一個using塊。

+0

謝謝你,它工作的行數。我還有一個關於我的問題的問題,正如你可以在'string cmdStr = String.Format(query)'中看到的那樣;'我想把'query'放在'SELECT'或'INSERT'之類的東西,爲什麼它可以'運行該查詢並只執行存儲過程?再次感謝:) – blankon91 2012-07-20 01:07:40

+0

更新:我很抱歉,但當我嘗試運行'select * from my_table'時,它顯示-1,但在我的數據庫管理中顯示'(10行受影響) '爲什麼在我的成功報告沒有顯示'10'? – blankon91 2012-07-20 02:36:41

+1

對不起,我的回答並不清楚,它只返回受插入/刪除/更新影響的行,而不是選擇。爲什麼你會爲Select語句使用ExecuteNonQuery()?如果你需要知道滿足一定條件的行數,可以使用'COUNT'和'ExecuteScalar()' – GarethD 2012-07-20 07:53:20

1

可以測試WCF服務在本地以及你可以確認ExecuteNonQuery()工作

int result = command.ExecuteNonQuery(); 

結果將受到的ExecuteNonQuery()

相關問題