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对数据库发出操作查询。虽然这需要在设计时投入更多的编码工作,但是代码的增加换来的是性能上的改善(就更不用说代码易于理解所带来的维护上的轻松了)。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux的iptables和firewall的区别

    linux的iptables和firewall的区别

    2021年10月19日
  • pfx证书解析

    pfx证书解析从pfx中获取CA证书opensslpkcs12-intest.pfx-nodes-outserver.pem输入证书密码,提取公钥opensslx509-inserver.pem-outpublic.cer提取私钥opensslrsa-inserver.pem-outprivate.key

  • asm 盘头损失,破坏

    asm 盘头损失,破坏

  • DevStack云计算平台快速搭建

    这学期学校开了一门课,叫云计算平台搭建,用的书是OpenStack,这个是现在比较流行的一个云计算平台,官方对这个平台的解释是OpenStackisacloudoperatingsystemthatcontrolslargepoolsofcompute,storage,andnetworkingresourcesthroughoutadatacenter,al

  • 影视短视频剪辑的完整操作流程(普通人也能学会)

    影视短视频剪辑的完整操作流程(普通人也能学会)嗨喽,大家好,我是会玩运营,能写代码,文案设计样样精通的江湖美男子菜鸟哥,一名走在营销路上的小菜鸟。点击上方蓝字“关注”,每天为你分享有用的营销运营干货。上一篇文章我们讲解了《全网最全抖音运营攻略》,相信看完这篇文章的朋友对于短视频运营多少有了一定的了解,文中的2020年抖音用户画像报告,我们了解到短视频用户对于影视类的作品关注度还是非常高的,今天我们就结合案例来为大家进行更加详细的讲解。本文将带你初步了解抖音、快手短视频中影视剪辑的完整操作流程,没有过多复杂的骚操作,零基础的普通人也能够看懂。

  • springboot+Vue_从零搭建springboot项目

    springboot+Vue_从零搭建springboot项目Hello,你好呀,我是灰小猿,一个超会写bug的程序猿!利用国庆期间做了一个基于springboot+vue的前后端分离的个人博客网站,今天在这里将开发过程和大家分享一下,手把手教你搭建一个自己专属的个人博客。完整源码放置在Gitee上了,【源码链接】小伙伴们记得⭐star⭐哟!小伙伴们一键三连➕关注!灰小猿带你上高速啦????????????!先看一下博客网站的演示视频:⚡项目目录⚡个人博客网站项目整体思路Java后端接口开发(1)数据库设计​(2)整合My

发表回复

您的电子邮箱地址不会被公开。

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