2024年4月28日发(作者:)

6.2.2 使用Command对象进行数据操作

Command对象简介

Command对象是在Connection对象连接数据库之后,对数据库执行查询、添加、删除

和修改等各种操作时使用。操作实现的方式可以使用SQL语句,也可以使用存储过程。根

据所用的.NET Framework数据提供程序的不同,Command对象也可以分成4种,分别是

SqlCommand、OleDbCommand、OdbcCommand和OracleCommand,根据本书编排下面我们

着重介绍一下SqlCommand。

SqlCommand对象常用属性

SqlCommand对象常用属性如下:

属 性

CommandText

CommandType

Connection

CommandTimeout

Parameters

说 明

获取或设置要执行的语句或存储过程

获取或设置一个值,该值指示如何解释CommandText属性

获取或设置命令使用的连接对象。默认为空

获取或设置试图执行命令时要等待的时间(以秒为单位)默认为30秒

获得与该命令关联的参数集合

表6.3 SqlCommand对象常用属性

SqlCommand对象的常用属性详解:

CommandType属性

获取或设置Command对象要执行命令的类型。

语法:public override CommandType CommandType {get; set;}

属性值:CommandType值之一,默认为 Text。

当将 CommandType 设置为 StoredProcedure 时,应将 CommandText 属性设置为存储

过程的名称。当调用 Execute 方法之一时,该命令将执行此存储过程。

CommandText属性

获取或设置要对数据源执行的Transact-SQL语句或存储过程。通过Command对象执行

SQL语句或存储过程。

语法:public override string CommandText { get; set; }

SqlCommand对象常用方法

SqlCommand对象常用方法如下:

方 法

ExecuteNonQuery

ExecuteScalar

ExecuteReader

说 明

执行SQL语句并返回受影响的行数

执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行

执行返回数据集的SELECT语句

表6.4 SqlCommand对象常用方法

SqlCommand对象常用方法详解:

ExecuteNonQuery方法

ExecuteNonQuery方法执行诸如UPDATE、INSERT和DELETE语句有关的更新操作,

在这些情况下,返回值是命令影响的行数。对于其他类型的语句,诸如SET或CREATE语

句,则返回值为-1;如果发生回滚,返回值也为-1。

语法:public override Object ExecuteNonQuery ()

例如,创建一个SqlCommand,然后使用ExecuteNonQuery方法执行(queryString代表

Transact-SQL语句如,UPDATE、INSERT或DELETE),代码如下:

private static void CreateCommand(string queryString,string connectionString)

{

SqlConnection connection = new SqlConnection(connectionString))

SqlCommand command = new SqlCommand(queryString, connection);

();

eNonQuery();//执行Command命令

}

ExecuteReader方法

ExecuteReader方法通常与查询命令一起使用,并且返回一个数据阅读器对象

SqlDataReader类的一个实例。数据阅读器是一种只读的、向前移动的游标,客户端代码滚

动游标并从中读取数据(下节将具体介绍数据阅读器)。如果通过ExecuteReader方法执行一

个更新语句,则该命令成功地执行,但是不会返回任何受影响的数据行。

例如,创建一个SqlCommand,然后应用ExecuteReader()方法来创建DataReader对象来

对数据源进行读取,代码如下:

SqlCommand command = new SqlCommand(queryString, connection);

//通过ExecuteReader方法创建DataReader对象

SqlDataReader reader = eReader();

while (())

{

ine(("{0}", reader[0]));

}

ExecuteScalar方法

执行查询,并返回查询所返回的结果集中第一行的第一列

语法:public override Object ExecuteScalar ()

如果只想检索数据库信息中的一个值,而不需要返回表或数据流形式的数据库信息。例

如,只需要返回 COUNT(*)、SUM(grade) 或 AVG(grade) 等聚合函数的结果,那么Command

对象的ExecuteScalar方法就很有用。如果在一个常规查询语句当中调用该方法,则只读取

第一行第一列的值,而丢弃所有其他值。

例如,使用SqlCommand对象的ExecuteScalar方法来返回表中记录的数目(SELECT

语句使用Transact-SQL COUNT聚合函数返回指定表中的行数的单个值),代码如下:

string sqlstr = "SELECT Count (*) FROM tbStudent";

SqlComand studentCMD = new SqlCommand(sqlstr,connection);