[ADO.NET] 命令物件 (Command)

  • 2148
  • 0

[ADO.NET] 命令物件 (Command)
若要執行某個動作查詢,可先建立Command物件,並將他的Connection屬性設定為狀態已經Open(或指定後再使用Open方法)
有三種方法可以執行Command指令的查詢:1. ExecuteNonQuery() 2. ExecuteReader() 3. ExecuteScalar() ...

 

若要執行某個動作查詢,可先建立Command物件,並將他的Connection屬性設定為狀態已經Open(或指定後再使用Open方法)

有三種方法可以執行Command指令的查詢:

1. ExecuteNonQuery:用來執行不傳回結果集的指令,他會傳回一個整數值,整數值即代表受到這個命令所執行的列數。一般Insert、Delete、Update都是使用這個命令查詢方法。

2. ExecuteReader:用來產生DataReader物件。除了這個方式之外,沒有其他方法可以獲得DataReader物件喔!

3. ExecuteScalar:用來傳回結果集裡面的第一筆的資料,忽略其他行列。適合用在傳回聚合值或只會擷取單一資料的時候。取得資料後再轉為合宜的資料型態即可。

一. ExecuteNonQuery:

刪除Defect資料庫中的DefectReport資料表中SN欄位的值為123的資料列。

   1: OleDbConnection^ conn=gcnew OleDbConnection();
   2: conn->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\defect.mdb";
   3:  
   4: conn->Open();
   5: OleDbCommand^ cmd=conn->CreateCommand();
   6:  
   7: cmd->CommandText="DELETE FROM DEFECTREPORT WHERE [SN]=123";
   8: cmd->ExecuteNonQuery();
   9:  
  10: conn->Close();

 

二. ExecuteReader:

   1: // conn的定義同上個Code Snippet
   2: conn->Open();
   3:  
   4: OleDbCommand^ cmd=conn->CreateCommand();  
   5: cmd->CommandText="SELECT * FROM DEFECTREPORT";    
   6:  
   7: //設定選取DefectReport中所有的資料  
   8: OleDbDataReader^ reader=cmd->ExecuteReader();  
   9:  
  10: while(reader->read()) 
  11: {   
  12: //do something  
  13: }
  14: //若未關閉時,再想開啟另個DataReader物件會導致錯誤   
  15: reader->Close();
  16: conn->Close();

 

三. ExecuteScalar:

 

傳回聚合值:

   1: // conn定義同上
   2: conn->Open();
   3: OleDbCommand^ cmd=conn->CreateCommand();
   4: cmd->CommandText="SELECT COUNT(*) FROM DEFECTREPORT"; 
   5:  
   6: int count=0;  
   7: // count會得到DefectReport資料表的資料列數量   
   8: count=cmd->ExecuteScalar();
   9: conn->Close();

 

以上。

就可以依照想取得的需求,決定要用哪個查詢方法囉!

 

沒試過,別說你不行!該努力就去努力,別過了再說後悔。

〈請多指教,新手上路〉