ADO.NET常用对象详解之:Command对象
1.Command对象概述
Command对象可以使用数据库命令直接与数据源进行通信。它的属性如下:
Name:Command对象的程序化名称。在代码中使用此名称来引用Command对象。
Connection:对Connection对象的引用,Command对象将使用该对象与数据库通信。
CommandType:Text | StoreProduce | TableDirect。
CommandText:SQL语句 | StoreProduce。
Parameters:命令对象包含的参数。
可以通过一下三种方式来创建Command对象:
方式一、
1 string strConn, strSQL;
2 strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
3 strSQL = "SELECT CustomerID,CompanyName FROM Customers";
4 OleDbConnection cn = new OleDbConnection(strConn);
5 cn.Open();
6 OleDbCommand cmd;
7
8 cmd = cn.CreateCommand();
9 cmd.CommandText = strSQL;
方式二、
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; cmd = new OleDbCommand(); cmd.CommandText = strSQl; cmd.Connection = cn;
方式三、
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; 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.参数化查询
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数据提供程序不支持通用的参数标记"?",而需要用"@"做前缀来命名参数。
以上内容引自:http://www.cnblogs.com/hide0511/archive/2006/09/04/494285.html