ExecuteScalar()和ExecuteNonQuery()之间的区别

时间:2013-12-12 08:19:48

标签: c# .net ado.net sqlcommand

标题可能看起来像往常一样。但我有价值的问题。

我在this链接中提到了ExecuteScalar()和ExecuteNonQuery()之间的区别。

但他们提到,ExecuteScalar()仅适用于非动作查询。

是真的吗?

许多人错误地理解ExecuteScalar()

你们有没有尝试过以下代码?

SqlConnection con = new SqlConnection("Data Source=SCI-DT-13; Initial Catalog=exercise; Integrated Security=true");
con.Open();
SqlCommand cmd = new SqlCommand("Insert into empdetails values('" + t_empid.Text + "','" + t_empname.Text + "','" + t_empdesig.Text + "')", con);
cmd.ExecuteScalar();

我确信此代码可以正常工作,并且行将插入到表中。

我的问题是,如果我们可以在action queries中执行ExecuteScalar(),那么为什么我们需要ExecuteNonQuery()

2 个答案:

答案 0 :(得分:3)

你是对的,ExecuteScalar将为动作查询返回null。

使用ExecuteNonQuery的一个原因是它返回受影响的行数。

我认为您不应该认为您链接的文章是权威来源 - 更好地参考MSDN所说的内容。

答案 1 :(得分:0)

ExexuteScalar - 只返回一个值 ExecuteNonQuery-它只执行像INSERT,UPDATE,DELETE

这样的DML操作