在做一個程序的時候用到ExecuteNonQuery()執行 select,結果總是返回-1。
查到下面文章。最近看到有人問爲什麼SqlCommand.ExecuteNonQuery()執行Select子句後老是返回-1的問題。
以前對這個一直都沒在意,基本上都沒有用其返回值,查了一下MSDN,如下:
SqlCommand.ExecuteNonQuery 方法對連接執行 Transact-SQL 語句並返回受影響的行數。
對連接執行 Transact-SQL 語句並返回受影響的行數。
命名空間:System.Data.SqlClient
程序集:System.Data(在 system.data.dll 中)
程序集:System.Data(在 system.data.dll 中)
備註:
您可以使用 ExecuteNonQuery 來執行目錄操作(例如查詢數據庫的結構或創建諸如表等的數據庫對象),或通過執行 UPDATE、INSERT 或 DELETE 語句,在不使用DataSet的情況下更改數據庫中的數據。
雖然 ExecuteNonQuery 不返回任何行,但映射到參數的任何輸出參數或返回值都會用數據進行填充。
對於 UPDATE、INSERT 和 DELETE 語句,返回值爲該命令所影響的行數。對於所有其他類型的語句,返回值爲 -1。如果發生回滾,返回值也爲 -1。
您可以使用 ExecuteNonQuery 來執行目錄操作(例如查詢數據庫的結構或創建諸如表等的數據庫對象),或通過執行 UPDATE、INSERT 或 DELETE 語句,在不使用DataSet的情況下更改數據庫中的數據。
雖然 ExecuteNonQuery 不返回任何行,但映射到參數的任何輸出參數或返回值都會用數據進行填充。
對於 UPDATE、INSERT 和 DELETE 語句,返回值爲該命令所影響的行數。對於所有其他類型的語句,返回值爲 -1。如果發生回滾,返回值也爲 -1。
下面的示例創建一個SqlCommand,然後使用 ExecuteNonQuery 執行它。給該示例傳遞兩個字符串:一個字符串是 Transact-SQL 語句(如 UPDATE、INSERT 或 DELETE),另一個字符串用於連接數據源。
private static void CreateCommand(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}