ExecuteScalar方法

ExecuteScalar方法oRs.Open”SELECTCOUNT(*)AsiRowCountFROMOrders”iCount=oRs.Fields(“iRowCount”).ValueADO.NET引入了一种从查询的结果中获取单值的新方式,可以用于预计只返回一行和一列的场合。ADO.NETCommand对象有一个ExecuteScalar方法,它从相关的查询中返回第一行和第一列的值。因为不用创建行集、查

大家好,又见面了,我是你们的朋友全栈君。

oRs.Open “SELECT COUNT(*) As iRowCountFROMOrders”

iCount=oRs.Fields(“iRowCount”).Value

ADO.NET引入了一种从查询的结果中获取单值的新方式,可以用于预计只返回一行和一列的场合。ADO.NETCommand对象有一个ExecuteScalar方法,它从相关的查询中返回第一行和第一列的值。因为不用创建行集、查找值并关闭行集,所以这样所产生的系统开销非常小。ExecuteScalar方法已经针对需要检索单值的特定场合进行了优化。下例实现的功能与前例相同,只不过使用的是ASP.NET和ADO.NET以及ExecuteScalar方法:

string sSql = “SELECTCOUNT(*) As iRowCountFROMOrders”;

SqlCommandoCmd=newSqlCommand(sSql,oCn);

oCmd.CommandType = CommandType.Text;

int iCount = (int)oCmd.ExecuteScalar();

检索单值的另一种方式是使用存储过程的输出参数。例如,这一技术也可以从一个单行中检索许多值。它在ADO和ADO.NET中都适用,虽然ADO.NET已经扩展了输出参数的功能。在ADO.NET中为了从Command对象获取输出变量的值,应该使用ExecuteNonQuery方法执行查询。该方法能够通知ADO.NET,查询不会返回一个行集,因此避免了DataSet或者DataReader的系统开销:

oCmd.ExecuteNonQuery();

oCmd.UpdatedRowSource=UpdateRowSource.OutputParameters;

intiOrderID=(int)oCmd.Parameters[“@OrderID”].Value;

此段代码将UpdatedRowSource属性设置为指向输出参数(假定它们已经进行了设置),然后就可以检索输出值了。在传统的ADO中这是在Connection对象的Execute方法中使用晦涩难懂的参数实现的,而我们可以看到,在ADO.NET中实现这一点已经非常简单了。当然,ADO.NET还有一个为返回标准行集进行了优化的方法—Command对象的Execute方法。在传统的ADO中,Recordset对象能够设置UPDATE、INSERT和DELETE语句,这些语句是为了使Recordset能够将对自己的任何更改应用于基础数据库所必需的。虽然这一功能非常方便,但因为必须要返回给数据库以决定如何实现,所以,它也增加了系统开销。ADO.NET对象通过CommandBuilder对象也可以实现这一点;但同样也存在着系统开销的问题。在大多数开发场景中,要求使用的确切SELECT、INSERT、UPDATE和DELETE语句在设计时是已知的。在传统的ADO中,没有什么简单的办法将操作查询与Recordset相关联从而来使用它们。而在ADO.NET中,DataAdapter有四个不同的Command对象与其相关联,可以表示每个操作查询以及SELECT语句。这使DataAdapter能够协助我们用查询的结果填充一个DataSet,还能提前通知DataAdapter对数据库发出操作查询。虽然这需要在设计时投入更多的编码工作,但是代码的增加换来的是性能上的改善(就更不用说代码易于理解所带来的维护上的轻松了)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149109.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何快速成长为不可或缺的技术人才?

    如何快速成长为不可或缺的技术人才?

    2021年10月22日
  • 用flash做古诗动画_《古诗三首》Flash动画课件[通俗易懂]

    用flash做古诗动画_《古诗三首》Flash动画课件[通俗易懂]《古诗三首》Flash动画课件古诗词三首牧童[唐]吕岩草铺横野六七里,笛弄①晚风三四声。归来饱饭黄昏后,不脱蓑衣②卧月明。注释①弄:逗弄。②蓑衣:棕或草编的外衣,用来遮风挡雨。………舟过安仁①[宋]杨万里一叶渔船两小童,收篙②停棹③坐船中。怪生④无雨都张伞,不是遮头是使风。注释①安仁:县名。在湖南省东南部,宋时设县。②篙:撑船用的竹竿或木杆。③棹:船桨。④怪生:怪不得。……

    2022年5月5日
  • jQuery ajax 例子「建议收藏」

    jQuery ajax 例子「建议收藏」 转自http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html使用jQuery将使

    2022年7月26日
  • java调用python脚本返回的参数_javaweb调用python

    java调用python脚本返回的参数_javaweb调用python实际工程项目中可能会用到Java和python两种语言结合进行,这样就会涉及到一个问题,就是怎么用Java程序来调用已经写好的python脚本呢,一共有四种方法可以实现:1、在java类中直接执行python语句此方法需要引用org.python包,需要下载Jpython。Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython是在JVM上实现的Python,由J

    2022年10月21日
  • Django自动化运维管理平台

    Django自动化运维管理平台运维管理平台展示,还在完善中,有所不足,望提出建议,感激不尽。@@个人网站:http://www.mykurol.com@@ Github:https://github.com/kurolz  架构:Python+Django+bootstrap+SaltStack+Zabbix+MySQL  资产管理:采用SaltStack调用收集主机配置信息入库  自动添加主机:输入ip、s…

    2022年5月17日
  • 苹果手机识别图片文字方法「建议收藏」

    苹果手机识别图片文字方法「建议收藏」识别图片文字的问题相信很多的小伙伴都是经历过的,一般遇到识别图片文字的问题,相信很多人都选择了用电脑打字进行转换,其实还有比这简单一下的方法吗,比如手机可以直接把图片文字识别出来,一起来看看操作方法吧。操作方法:1.先将需要进行文字识别的图片保存在手机里,然后在应用市场里找到OCR文字识别。2.将其运行在文字识别的页面有图片识别和拍照识别,在此选择图片识别。 3.这时会…

    2022年4月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号