C#中ExecuteNonQuery()返回值注意點分析
本文實例講述了C#中ExecuteNonQuery()返回值注意點。對于C#數(shù)據(jù)庫程序設(shè)計有一定的借鑒價值。分享給大家供大家參考之用。具體分析如下:
首先,在查詢某個表中是否有數(shù)據(jù)的時候,我們通常用ExecuteNonQuery(),并通過判斷值是否大于0來判斷數(shù)據(jù)的存在與否。結(jié)果與我所設(shè)想的很不一致,調(diào)試時才發(fā)現(xiàn),其執(zhí)行后返回的結(jié)果是-1,對此我很是不理解,回頭查了下資料,如下顯示:
SqlCommand.ExecuteNonQuery 方法對連接執(zhí)行 Transact-SQL 語句并返回受影響的行數(shù)。
備注:可以使用 ExecuteNonQuery 來執(zhí)行目錄操作(例如查詢數(shù)據(jù)庫的結(jié)構(gòu)或創(chuàng)建諸如表等的數(shù)據(jù)庫對象),或通過執(zhí)行 UPDATE、INSERT 或 DELETE 語句,在不使用 DataSet 的情況下更改數(shù)據(jù)庫中的數(shù)據(jù)。
雖然 ExecuteNonQuery 不返回任何行,但映射到參數(shù)的任何輸出參數(shù)或返回值都會用數(shù)據(jù)進(jìn)行填充。對于 UPDATE、INSERT 和 DELETE 語句,返回值為該命令所影響的行數(shù)。對于所有其他類型的語句,返回值為 -1。如果發(fā)生回滾,返回值也為 -1
看完后才明白,原來select語句不適合ExecuteNonQuery()方法,原來是這樣,方法用錯了!現(xiàn)在特意把它記錄下來,希望朋友不要犯類似的錯誤!
public int ExecuteNonQuery();
返回值
受影響的行數(shù)。
實現(xiàn)
IDbCommand.ExecuteNonQuery
備注:
你可以使用 ExecuteNonQuery 來執(zhí)行目錄操作(例如查詢數(shù)據(jù)庫的結(jié)構(gòu)或創(chuàng)建諸如表等的數(shù)據(jù)庫對象),或通過執(zhí)行 UPDATE、INSERT 或 DELETE 語句,在不使用 DataSet 的情況下更改數(shù)據(jù)庫中的數(shù)據(jù)。
雖然 ExecuteNonQuery 不返回任何行,但映射到參數(shù)的任何輸出參數(shù)或返回值都會用數(shù)據(jù)進(jìn)行填充。
對于 UPDATE、INSERT 和 DELETE 語句,返回值為該命令所影響的行數(shù)。對于其他所有類型的語句,返回值為 -1。
public void CreateMySqlCommand(string myExecuteQuery, SqlConnection myConnection)
{
SqlCommand myCommand = new SqlCommand(myExecuteQuery, myConnection);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
相信本文所述對大家的C#程序設(shè)計有一定的借鑒價值。
相關(guān)文章
C#判斷指定驅(qū)動器是否是Fat分區(qū)格式的方法
這篇文章主要介紹了C#判斷指定驅(qū)動器是否是Fat分區(qū)格式的方法,涉及C#中DriveFormat屬性的使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
C# 使用CancellationTokenSource取消多線程
有時間我們在使用多線程的時候,需要取消線程的執(zhí)行,可以使用CancellationTokenSource來取消對Task開辟多線程的取消,感興趣的可以了解一下2021-08-08

