SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数。可以写也可以读。 1.可以使用ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象), 2.对于Update、Insert 和 Delete 语句,返回值为该命令所影响的行数。 3.对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为 -1. 4.执行Select子句,数据库并无变化,自然返回-1。同样适合ODBC、OLEDB等数据源,因为都实现IDbCommand.ExecuteNonQuery方法。
ExecuteScalar():执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。仅可以读。 语法: public abstract Object ExecuteScalar() 返回值: 类型: System.Object,结果集中第一行的第一列。 备注: 使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。如果找不到结果集中第一行的第一列;则返回 null 引用(在 Visual Basic 中为 Nothing)。 如果数据库中的该值为 null,此查询将返回 DBNull.Value。
- 对于查询单个字段,不包括函数的 select 语句,例如 select a字段 from 表A ,如果不存在值,DbCommand.ExecuteScalar 方法的返回值是 null,调用者需要使用 result == null 来判断。
- 对于使用函数的select 语句,例如select sum(a字段) from 表A,如果不存在值,DbCommand.ExceuteScalar 方法的返回值是 DBNull.Value,调用者需要用 result is DBNull 或者 result == DBNull.Value 来判断。
ExecuteReader 返回一个 SqlDataReader 对象。
SqlDataAdapter 获取一个DateSet对象。
Command 对象公开了几个可用于执行所需操作的 Execute 方法。当以数据流的形式返回结果时,使用 ExecuteReader 可返回 DataReader 对象。使用 ExecuteScalar 可返回单个值。使用 ExecuteNonQuery 可执行不返回行的命令。
当您将 Command 对象用于存储过程时,可以将 Command 对象的 CommandType 属性设置为 StoredProcedure。当 CommandType 为 StoredProcedure 时,可以使用 Command 的 Parameters 属性来访问输入及输出参数和返回值。无论调用哪一个 Execute 方法,都可以访问 Parameters 属性。但是,当调用 ExecuteReader 时,在 DataReader 关闭之前,将无法访问返回值和输出参数。