您的位置:首页 > 产品设计 > UI/UE

sql2000 关于ExecuteNonQuery与ExecuteScalar区别的探讨,返回数据库数据的行数通常用intCount=(int)cmd.ExecuteScalar()

2008-08-26 13:29 489 查看
public int GetRsCount(string table_name)

{

string strSql;

int intCount;

Open();

strSql="select count(*) from "+tmk;

SqlCommand cmd=new SqlCommand(strSql,cn);

语句1) intCount=(int)cmd.ExecuteScalar();//断点

语句2)// intCount=(int)cmd.ExecuteNonQuery();//断点

cn.Close();

return intCount;

}

今天测试了一下ExecuteNonQuery与ExecuteScalar的区别:

在以上语句中分别执行了语句1和语句2,因为是查询语句,所以可以查询到数据库中的所有数据,

本身数据库中有7条数据,当我用ExecuteScalar语句时,在该句设了个断点,检测到 intCount为7,

同样,当我使用语句2是,检测到 intCount为0,现在才知道为什么ExecuteScalar主要用于查询语句,

而ExecuteNonQuery用于更新和删除语句,

但是有一点不懂的就是,ExecuteScalar语句返回的是影响数目,但是帮助中确是说“ExecuteScalar:执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。 ”

ExecuteNonQuery主要是在执行更新和删除时才返回影响的数目,而在执行查询时则是返回一个0。
____________________________________

个人理解:

ExecuteScalar:执行查询,并返回查询所返回的结果集中第一行的第一列。查询数据库表的行数,并返回忽略额外的列或行。(这是正解)

ExecuteNonQuery主要是用来执行更新和删除,并不返回任何值。实际上是对上述操作成功与否的标志返回。

由此可见:对数据的更新不需要返回结果集,建议使用ExecuteNonQuery方法。由于不返回结果集,它仅仅返回受影响的行数,对服务器资源的开销比较小。如需从数据库中检索单个值(例如id号,count值),建议使用ExecuteScalar方法,此操作需要的代码较少。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐