[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();
以上。
就可以依照想取得的需求,決定要用哪個查詢方法囉!
沒試過,別說你不行!該努力就去努力,別過了再說後悔。
〈請多指教,新手上路〉