ExecuteNonQuery()
执行命令对象的SQL语句,返回一个int变量,如果sql语句是对数据库的记录进行操作(insert, delete, update),那么将返回操作所影响的记录条数。对于其他类型的语句,返回值为-1.如果发生回滚,返回值也为-1.
ExecuteScalar()
执行命令对象的SQL语句,如果是select,则仅返回查询结果集中的第一行第一列,而忽略其他的行和列。该方法返回的结果为object类型,在使用之前必须强制转换为所需类型。如果sql语句不是select,则返回未实例化对象,因为对象未实例化,所以返回结果不能ToString(),不能Equals(null),即返回结果没有任何作用。当只需返回一个单独的数据元时,则可以使用此方法来提高代码的性能,常用于执行聚合函数。
ExecuteReader()
如果是select,返回查询结果的集合,类型是DataReader(OleDbDataReader, SqlDataReader, OracleDataReader等)。它提供了“游水”式的执行方式,即从结果中读取一行之后,移动到另一行,前一行无法再用。有一点需要注意的是,要等到手动调用Read()方法之后,DataReader对象才会移动到结果集的第一行,同时此方法也返回一个bool值,true表示下一行可用,false表示到达结果集末尾。
如果不是select语句,则返回一个没有任何数据的DataReader类型的集合(EOF)。
文章转载自:ExecuteNonQuery、ExecuteScalar、ExecuteReader区别 http://www.studyofnet.com/news/433.html