ExecuteNonQuery() 方法 select

在做一個程序的時候用到ExecuteNonQuery()執行 select,結果總是返回-1
查到下面文章。
關於ExecuteNonQuery() 方法 
 最近看到有人問爲什麼SqlCommand.ExecuteNonQuery()執行Select子句後老是返回-1的問題。

 以前對這個一直都沒在意,基本上都沒有用其返回值,查了一下MSDN,如下:
SqlCommand.ExecuteNonQuery 方法對連接執行 Transact-SQL 語句並返回受影響的行數。

備註:
 可以使用 ExecuteNonQuery 來執行目錄操作(例如查詢數據庫的結構或創建諸如表等的數據庫對象),或通過執行 UpdateInsert 或 Delete 語句,在不使用 DataSet 的情況下更改數據庫中的數據。
 雖然 ExecuteNonQuery 不返回任何行,但映射到參數的任何輸出參數或返回值都會用數據進行填充。
 對於 UpdateInsert 和 Delete 語句,返回值爲該命令所影響的行數。對於所有其他類型的語句,返回值爲 -1。如果發生回滾,返回值也爲 -1

 執行Select子句,數據庫並無變化,自然返回-1。同樣適合ODBCOLE DB等數據源,因爲都實現IDbCommand.ExecuteNonQuery方法。

函數申明:
[Visual Basic]
Public Overridable Function ExecuteNonQuery() As Integer Implements _ IDbCommand.ExecuteNonQuery

實現:
 IDbCommand.ExecuteNonQuery

 對於IDbCommand.ExecuteNonQuery 方法,針對 .NET Framework 數據提供程序的 Connection 對象執行 SQL 語句,並返回受影響的行數。
 可以使用 ExecuteNonQuery 來執行目錄操作(例如查詢數據庫的結構或創建諸如表等的數據庫對象),或通過執行 UpdateInsert 或 Delete 語句,在不使用 DataSet 的情況下更改數據庫中的數據。
 雖然 ExecuteNonQuery 不返回任何行,但映射到參數的任何輸出參數或返回值都會用數據進行填充。
 對於 UpdateInsert 和 Delete 語句,返回值爲該命令所影響的行數。對於其他所有類型的語句,返回值爲 -1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章