1.Command對象概述
Command對象可以使用數據庫命令直接與數據源進行通信。它的屬性如下:
Name:Command對象的程序化名稱。在代碼中使用此名稱來引用Command對象。
Connection:對Connection對象的引用,Command對象將使用該對象與數據庫通信。
CommandType:Text | StoreProduce | TableDirect。
CommandText:SQL語句 | StoreProduce。
Parameters:命令對象包含的參數。
可以通過一下三種方式來創建Command對象:
![ContractedBlock.gif]()
方式一
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)//NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
![None.gif]()
cmd = cn.CreateCommand();
cmd.CommandText = strSQL;
![ContractedBlock.gif]()
方式二
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)//NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
![None.gif]()
cmd = new OleDbCommand();
cmd.CommandText = strSQl;
cmd.Connection = cn;
![ContractedBlock.gif]()
方式三
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)//NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
![None.gif]()
cmd = new OleDbCommand(strSQL, cn); 2.Command對象參數 常用屬性如下:
ParameterName:參數名稱,如"@CatID"。
DbType,SqlType,OleDbType:參數的數據類型。
Direction:ParameterDirection枚舉值。
ParameterDirection.Input(默認值)| ParameterDirection.InputOutput |
ParameterDirection.Output | ParameterDirection.ReturnValue
3.執行 四種執行方式:
ExecuteNonQuery() 返回受命令影響的行數。
ExecuteScalar() 返回第一行第一列(使用與集函數)。如Count(*),Sum,Avg等聚合函數。
ExecuteReader() 返回一個DataReader對象。如果SQL不是查詢Select,則返回一個沒有任何數據的System.Data.SqlClient.SqlDataReader類型的集合(EOF)。
ExecuteXmlReader()返回一個XmlReader對象。
4.參數化查詢![ContractedBlock.gif]()
使用示例
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)//NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
strSQl = "SELECT OrderID,CustomerID,EmployeeID,OrderDate FROM Order WHERE CustomerID = ?";
OleDbCommand cmd = new OleDbCommand(strSQl,cn);
cmd.Parameters.Add("@CustomerID",OleDbType.Wchar,5);
cmd.Parameters[0].Value = "ALFKI";
OleDbDataReader rdr = cmd.ExecuteReader();注:SQL Server .Net數據提供程序不支持通用的參數標記"?",而需要用"@"做前綴來命名參數。