ExecuteNonQuery方法、ExecuteScalar方法、ExecuteReader方法的區別


----ExecuteNonQuery():執行命令對象的SQL語句,返回一個int類型變量,如果SQL語句是對數據庫的記錄進行操作(如記錄的增加、刪除和更新),那么方法將返回操作所影響的記錄條數。
----ExecuteScalar():執行命令對象的SQL語句,如果SQL語句是SELECT查詢,則僅僅返回查詢結果集中的第1行第1列,而忽略其他的行 和列。該方法所返回的結果為object類型,在使用之前必須強制轉換為所需的類型。如果SQL語句不是SELECT查詢,則返回結果沒有任何作用。

----ExecuteReader():執行命令對象的SQL語句,在ADO.NET中,就是DataReader 對象的ExecuteReader()方法來進行數據的列出,並且我們用這個ExecuteReader()方法來顯示數據是最快的一種方法,因為當我們在用ExecuteReader()方法中的DataReader 對象來進行數據的在網站建設中顯示時,他只可以一條一條向前讀,不能返回,也就是像ASP中的ADO方法中的Recordset 對象的Movenext一樣,它沒有move -1這樣的返回方法。

------【分析】
(1)命令對象的ExecuteNonQuery()方法用於執行任何不從數據庫返回結果集的SQL操作命令,包括INSERT INTO、UPDATE、DELETE語句、沒有返回數值的存儲過程、CREATE TABLE和CREATEINDEX之類的DDL語句。ExecuteNonQuery方法還可用來執行目錄操作,例如查詢數據庫的結構或創建諸如表等的 數據庫對象。ExecuteNonQuery方法對於UPDATE、INSERT INTO和DELETE這些操作語句,其返回值為該命令所影響的行數。對於所有其他類型的語句,返回值為-1。如果發生回滾,返回值也為-1。
假設cmd為SQL SERVER數據提供者的命令對象(即SqlCommand),cn為連接對象(保持打開狀態),調用ExecuteNonQuery方法如以下代碼所示。
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
//設置cmd的命令文本,本例為刪除Table1表中id字段值大於1的記錄
cmd.CommandText = “DELETE FROM Table1 WHERE [id]>1”;
int count = cmd.ExecuteNonQuery();
以上代碼中,創建了SqlCommand類型的命令對象cmd,設置其連接為連接對象cn,SQL命令文本為某個SQL語句(一般為增、刪、改命令)。執 行ExecuteNonQuery方法后,命令文本即通過連接對象作用到數據庫中,其返回值count則為數據庫中受到影響的數據記錄數量。
(2)命令對象的ExecuteScalar()方法由於只能返回數據集的第1行第1列,所以常被用於執行聚合函數。假設cmd為SQL SERVER數據提供者的命令對象(即SqlCommand),cn為連接對象(保持打開狀態),調用ExecuteScalar方法如以下代碼所示。
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
//設置cmd的命令文本,本例為查詢Table1表中記錄的數量
cmd.CommandText = “SELECT COUNT(*) FROM Table1”;
int count = (int)cmd.ExecuteScalar();
以上代碼中,創建了SqlCommand類型的命令對象cmd,設置其連接為連接對象cn,SQL命令文本為某個SQL語句。由於返回值為object類型,所以需要進行強制轉換,count變量即存儲了所需數據表中記錄的數量。
說明:如果沒有數據可操作,那么只能使用調用命令對象的ExecuteReader方法,返回一個數據讀取器(DataReader對象)。因為 ExecuteNonQuery()與ExecuteScalar()在沒有數據的時候調用時,就會出現“對象沒有實例化”的錯誤。所以在判斷是否有數據 時,應該調用數據讀取器的Read()方法來檢測。
---------------------
作者:yhj198927
來源:CSDN
原文:https://blog.csdn.net/yhj198927/article/details/72844051
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM