Answers:
ExecuteScalar
通常在查询返回单个值时使用。如果返回更多,则结果为第一行的第一列。例如SELECT @@IDENTITY AS 'Identity'
。ExecuteReader
用于具有多个行/列(例如SELECT col1, col2 from sometable
)的任何结果集。ExecuteNonQuery
通常用于没有结果的SQL语句(例如UPDATE,INSERT等)。ExecuteNonQuery
可以返回受影响的行数。
ExecuteNonQuery():
ExecuteReader():
ExecuteScalar():
参考网址:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
每个都是不同的类型执行。
ExecuteScalar将成为将返回单个值的查询类型。
一个示例是在插入后返回生成的ID。
INSERT INTO my_profile (Address) VALUES ('123 Fake St.');
SELECT CAST(scope_identity() AS int)
ExecuteReader为您提供了数据读取器,使您一次可以读取结果的所有列。
一个示例是为一个或多个用户提取配置文件信息。
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery是任何不返回值但实际上正在执行某种形式的工作(如插入删除或修改内容)的SQL。
一个示例是更新数据库中的用户个人资料。
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
从文档中(注意:当您想知道做什么时,MSDN是一个方便的资源!):
使用ExecuteScalar方法从数据库中检索单个值(例如,聚合值)。与使用ExecuteReader方法相比,这需要更少的代码,然后使用SqlDataReader返回的数据执行生成单个值所需的操作。
将CommandText发送到Connection并构建一个SqlDataReader。
...以及从SqlDataReader ...
提供一种从SQL Server数据库读取仅行数据流的方法。这个类不能被继承。
您可以使用ExecuteNonQuery执行目录操作(例如,查询数据库的结构或创建数据库对象,例如表),或通过执行UPDATE,INSERT或DELETE语句来更改数据库中的数据而不使用DataSet。
要添加到其他人发布的内容中:
ExecuteScalar从概念上返回查询结果集第一行中最左边的列;您可以对SELECT * FROM人员执行ExecuteScalar,但是您只会得到结果行的第一个单元格,通常用于返回单个值的查询。我对SQLServer不确定100%,但是在Oracle中,您不会使用它来运行FUNCTION(返回单个值的数据库代码),并且即使函数返回单个值,也希望它为您提供函数的返回值。但是,如果您将函数作为查询的一部分运行,例如SELECT SUBSTR('abc',1,1)FROM DUAL,则它将基于返回值存储在最左上角的事实给出返回值结果行集的单元格
ExecuteNonQuery将用于运行数据库存储过程,函数和查询,以修改数据(INSERT / UPDATE / DELETE)或修改数据库结构(CREATE TABLE ...)。通常,调用的返回值指示该操作影响了多少行,但请查阅数据库文档以确保有此操作。
ExecuteNonQuery
此ExecuteNonQuery方法将仅用于插入,更新和删除,创建和SET语句。ExecuteNonQuery方法将返回受INSERT,DELETE或UPDATE操作影响的行数。
执行标量
从数据库中检索单个值非常快。在使用命令对象执行SQL查询或存储过程时,Execute Scalar将返回单行单列值,即单值。 ExecuteReader
使用命令对象执行SQL查询或存储过程时,将使用Execute Reader返回行集。这是仅对记录的前向检索,用于从头到尾读取表值。
ExecuteNonQuery: 通常在Sql语句未返回任何内容(如插入,更新,删除操作)时使用。
cmd.ExcecuteNonQuery();
ExecuteScalar:
当Sql查询返回单个值时将使用它。
Int b = cmd.ExcecuteScalar();
ExecuteReader
当Sql查询或存储过程返回多个行/列时将使用它
SqlDataReader dr = cmd.ExecuteReader();
有关更多信息,请单击此处http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery