爲何 SqlCommand.ExecuteNonQuery() 方法返回 -1 數據庫
不知道你們在使用ExecuteNonQuery方法的時候有沒有碰到過返回-1的狀況。ExecuteNonQuery方法返回增刪改時,受影響的行數。那怎麼會返回-1呢 查了一些資料後終於得知返回-1的緣由。測試
在進行增刪改時,數據庫能爲咱們統計受影響行數的前提條件是,關閉NOCOUNT,即 Set nocount off。默認狀況下,它是關閉的,即咱們是能夠獲得受影響的行數的。你能夠測試以下(加與不加set nocount on是有區別的):ui
SqlCommand cmd = new SqlCommand("set nocount on; insert into test values ('test')", con);spa
int rows = cmd.ExecuteNonQuery();cmd
有的人就說了,我僅僅是調用一個簡單的存儲過程,怎麼仍是返回-1呢 這個是因爲Visual Studio引發的。it
咱們在Visual Studio中寫了一個存儲過程時,它會被默認加上set nocount on。這樣就致使了調用存儲過程時始終得不到影響的行數,而返回-1。不過我在Visual Studio 2008 Team Suit中測試了下,這個問題不存在了。可能之前的版本有這樣的問題吧(未測試),碰到這種狀況就多留意些。io