2012-09-21 45 views
4

我目前正在拋光與SQL-Server基礎相關的C#應用​​程序。一個DELETE查詢,怎麼知道沒有東西要刪除?

這很簡單,您可以通過應用程序的某些字段從SQL表中添加或刪除條目。

的問題是: 在一個刪除的行爲,我做了這樣的查詢:

DELETE FROM table 
WHERE ID = @ID 

它刪除什麼,我要求它刪除,但如果查詢沒有找到的東西D B ? 我該如何檢測? 因爲在這種情況下,應用程序不會刪除任何內容,並且不會引發異常。 爲了簡短起見,我只想告訴用戶在這種情況下沒有什麼可以刪除的。

+2

值得一提的是,您的查詢將刪除*所有*從表中的數據,如果*行的任何*有'ID = @ ID' 。也就是說,你要麼刪除整個表或者什麼都不刪除。那是你的意圖嗎? –

+0

不,謝謝你指出,順便說一句 – Jan

回答

11

如果您使用的是SqlCommand對象,有一種方法稱爲ExecuteNonQuery。該方法返回有多少行受到影響。所以,零意味着沒有。

private static void CreateCommand(string queryString, 
    string connectionString) 
{ 
    using (SqlConnection connection = new SqlConnection(
       connectionString)) 
    { 
     SqlCommand command = new SqlCommand(queryString, connection); 
     command.Connection.Open(); 
     int rowsAffected = command.ExecuteNonQuery(); // <== this 
    } 
} 
+0

如果僅調用特定查詢,則該方法很好。但在這個問題上沒有這樣的說法..所以我想知道這個帖子是如此的好:) –

+1

我的一天,謝謝。 – Jan

3
delete from table where [email protected] 
select @@rowcount 

這將返回有多少行實際上是刪除。你不需要存在。

+0

該查詢有不同的行爲,在帖子中。 OP可能需要'存在'! –

+0

我認爲你應該閱讀在這種情況下存在的東西。它是與行ID進行逐行比較。 –

+0

我認爲你應該重讀原始查詢。如果在表中有任何單行*且ID爲ID,那麼存在將爲所有行返回true,因此所有行都將被刪除。 (也就是說,OP已經證實這是他的錯誤,因此歡迎您改變行爲。) –

相關問題