[英]C# SqlCommand.ExecuteNonQuery returning -1 for successful UPDATE SQL statement
使用.ExecuteNonQuery
的以下代碼似乎有效:
public static void StringQueryWithParameterList(
string queryString,
List<string> keys,
List<string> values
)
{
SqlCommand command = new SqlCommand(queryString);
int affected;
command.Connection = GetConnection();
command.CommandType = CommandType.Text;
for (int i = 0; i < keys.Count; i++) {
command.Parameters.AddWithValue(keys[i], values[i]);
}
affected = command.ExecuteNonQuery(); // Note: this is returning -1 ... why?
if (affected < 1)
{
throw new Exception("No rows were updated by this update query.");
}
}
.ExecuteNonQuery
返回-1
的原因我不明白。 我觀察到此功能確實有效,當我簽入 SQL Server Management Studio 時,數據庫正在按預期更新。 顯然,我想使用我期望從.ExecuteNonQuery
獲得的返回值來驗證行是否已成功更改,但這不起作用。
我調查了.ExecuteNonQuery
的 MSDN 文檔( 這里)。 文檔報告在以下情況下預期結果為-1
:
為了透明起見,這是我正在使用的查詢:
UPDATE my_table SET my_col = 2 WHERE my_id = 'some_id';
SET NOCOUNT
可能在實例級別處於ON
狀態。
要檢查它,您可以使用DBCC USEROPTIONS;
為了SET NOCOUNT OFF
,您可以
sp_configure 'user options' 0
PS: AddWithValue(keys[i], values[i])
不是類型安全的。 我不建議使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.