SqlServer資料庫的一些方法的用途

來源:互聯網
上載者:User

一直分不清這三種方法的具體用法現在終於找齊了

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

(1)ExecuteNonQuery():執行命令對象的SQL語句,返回一個int類型變數,如果SQL語句是對資料庫的記錄進行操作(如記錄的增加、刪除和更新),那麼方法將返回操作所影響的記錄條數。

(2)ExecuteScalar():執行命令對象的SQL語句,如果SQL語句是SELECT查詢,則僅僅返回查詢結果集中的第1行第1列,而忽略其他的行和列。該方法所返回的結果為object類型,在使用之前必須強制轉換為所需的類型。如果SQL語句不是SELECT查詢,則返回結果沒有任何作用。

 

------【分析】
命令對象的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則為資料庫中受到影響的資料記錄數量。
命令對象的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變數即儲存了所需資料表中記錄的數量。

 

 (3)ExecuteReader():我們通常在asp中用Recordset對象來從資料庫中讀出資料,並且用
迴圈語句來一個一個的讀出資料,但在我們的ADO.NET中,我們就是用DataReader 對象的
ExecuteReader()方法來進行資料的列出,並且我們用這個ExecuteReader()方法來顯示資料
是最快的一種方法,因為當我們在用ExecuteReader()方法中的DataReader 對象來進行資料
的在網站建設中顯示時,他只可以一條一條向前讀,不能返回,也就是像ASP中的ADO方法
中的Recordset 對象的Movenext一樣,他沒有move -1這樣的返回方法。
說明:如果沒有資料可操作,那麼只能使用調用命令對象的ExecuteReader方法,返回一個資料讀取器(DataReader對象)。因為 ExecuteNonQuery()與ExecuteScalar()在沒有資料的時候調用時,就會出現“對象沒有執行個體化”的錯誤。所以在判斷是否有資料時,應該調用資料讀取器的Read()方法來檢測。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.