ExecuteReader    将 CommandText 发送到 Connection 并生成一个 SqlDataReader    执行返回行的命令。

为了提高性能,ExecuteReader     使用     Transact-SQL     sp_executesql     系统存储过程调用命令。

因此,如果用于执行像Transact-SQL     SET     语句这样的命令,ExecuteReader     可能无法获得预期效果;

ExecuteNonQuery      执行     Transact-SQL     INSERT、DELELE、UPDATE     及     SET     语句等命令,返回受影响行数,而在执行查询时则是返回一个0。

ExecuteScalar     执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行;

ExecuteXmlReader       将     CommandText     发送到     Connection     并生成一个     XmlReader     对象。

ExecuteNonQuery(增、删、改操作)  执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。

ExecuteScalar(执行查询,有返回值) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。

ExecuteReader(查询时使用,每次读一行)将 CommandText 发送到 Connection 并生成一个 SqlDataReader。

这节课描述了SqlCommand对象以及如何使用它与数据库交互。下面是本课的目标:

知道什么是command对象

学习如何使用ExecuteReader方法查询数据

学习如何使用ExecuteNonQuery方法插入和删除对象

学习如何使用EXecuteScalar方法返回单一值

介绍

SqlCommand对象允许你指定在数据库上执行的操作的类型。比如,你能够对数据库中的行数据执行select,insert,modify以及delete命令。SqlCommand对象能被用来支持断开连接数据管理的情况,但是在这节课我们将只单独使用SqlCommand对象。后面关于SqlDataAdapter的课程将解释如何使用断开数据实现应用程序。这节课将同时展示如何从数据库中返回一个单独的值,比如表中记录的数量。

创建SqlCommand对象SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn);

上面一行是典型的实例化SqlCommand对象的代码。它使用一个string参数来保存你想要执行的命令以及一个关于SqlConnection对象的引用。SqlCommand具有重载形式,这些形式你将在以后的示例中看到。

查询数据当使用SQL的select命令,会得到一组数据集。为了和SqlCommand对象配合使用,你应该使用ExecuteReader方法,它返回一个SqlDataReader对象。我们将在后面的内容讨论SqlDataReader。下面的例子显示了如何使用SqlCommand对象来得到SqlDataReader对象:

// 1. Instantiate a new command with a query and connection

SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn);

// 2. Call Execute reader to get query results

SqlDataReader rdr = cmd.ExecuteReader();

在上面的示例中,我们通过传递命令字符串核连接对象到构造函数的方式实体化了SqlCommand对象。然后我们通过SqlCommand对象cmd调用ExecuteReader方法得到了SqlDataReader对象。

这些代码是表1中ReadData方法的一部分,我们将在后面集中介绍。

插入数据要对数据库插入数据,使用SqlCommand对象的ExecuteNonQuery方法。下面的代码显示了如何向数据库表插入数据:

string insertString = @"insert into Categories(CategoryName, Description)values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')";

SqlCommand cmd = new SqlCommand(insertString, conn);

cmd.ExecuteNonQuery();SqlCommand的实例化过程与以前看到的有一些区别,但是基本一致。在构造函数的第一个字符串参数中是用的是插入字符串变量而不三字符串字面值。该变量在SqlCommand声明之前被声明了。

注意在insertString文本中“doesn’’t”的两个单引号(’’)。这是将它转义为适当的单引号。

另外一个需要注意的是我们显式指明了列:CategoryName和Description。列表中有一个主键名为CategoryID。我们忽略这列因为SQL Server将自动添加此字段。试图对主键比如CategoryID添加值会产生异常。

为了执行此命令,我们简单的对SqlCommand实体cmd调用ExecuteNonQuery方法。

这段代码是表1中InsertData方法的一部分,我们将在后面集中介绍。

更新数据

ExecuteNonQuery方法同样用来更新数据。下面的代码显示了如何更新数据:

string updateString = @"update Categories set CategoryName = 'Other'

where CategoryName = 'Miscellaneous'";

SqlCommand cmd = new SqlCommand(updateString);

cmd.Connection = conn;

cmd.ExecuteNonQuery();

删除数据你同样能够使用ExecuteNonQuery方法删除数据。下面的例子说明了如何使用EXecuteNonQuery方法删除数据库中的记录。

string deleteString = @"delete from Categories where CategoryName = 'Other'";

SqlCommand cmd = new SqlCommand();

cmd.CommandText = deleteString;

cmd.Connection = conn;

cmd.ExecuteNonQuery();这个示例使用了没有参数的SqlCommand构造函数。取而代之的是显式地设置了CommandText和SqlCommand对象的连接属性。

我们同样能够使用SqlCommand构造函数在前面的两个重载形式——用来插入或者更新命令——得到相同的结果。它说明了在任何时候既能够改变命令文本又能够改变连接对象。

ExecuteNonQuery方法调用将命令传递给数据库。

得到单一值某些时候你想从数据库中只取一个值,它可能是关于数据集的计数、和、平均值或者其他聚合数值。使用ExecuteReader方法并计算代码中的结果并不是做这些事情的有效方式。最好的选择就是让数据库能够执行并且只返回你所需要的单独的值。下面的示例说明了如何使用ExecuteScalar方法来实现:

SqlCommand cmd = new SqlCommand("select count(*) from Categories", conn);

int count = (int)cmd.ExecuteScalar();总结SqlCommand对象允许你擦许并对数据库传送命令。它含有针对不同的命令而特定的方法。ExecuteReader方法返回SqlDataReader对象来现实查询的结果。对于insert,update以及delete这些SQL命令,使用ExecuteNonQuery(非查询语句)方法。如果你只需要查询的单独聚集值,ExecuteScalar方法是最好的选择

c# mysql executescalar为什么返回值是空_C#中ExecuteReader()、ExecuteNonQuery()、ExecuteScalar()方法的作用 | 学步园...相关推荐

  1. c# mysql executescalar为什么返回值是空_C#中ExecuteScalar的返回值DBNull和null的值别说明...

    select 1 这样返回的object是 1 select null 这样返回的是DBNull.Value select isnull(null,1) 返回的是 1 select top 0 id ...

  2. c# mysql executescalar为什么返回值是空_当没有结果返回时处理ExecuteScalar()

    根据DbCommand.ExecuteScalar的MSDN文档 : 如果结果集中第一行的第一列未find,则返回null引用(在Visual Basic中为Nothing). 如果数据库中的值为空, ...

  3. 调用个别f5 负载端口为80的vs时,返回值为空的问题

    现状: vs负载端口为80并添加XFF,pool包含2个member,member的monitor端口为80&9000. 故障现象: 应用同事描述说再完全复制了一个member并添加到pool ...

  4. mock如何为空_Mockito怎么样Mock返回值为空的方法

    [在前面文章中,讨论了如何直接减少构造函数和方法的参数,比如通过自定义类型.引入参数对象.Builder模式.重载和方法命名来减少参数.你可能会奇怪为什么会讨论方法返回 Mockito怎么样Mock返 ...

  5. IntelliJ IDEA设置方法注释模板并解决入参和返回值为空问题

    ## 简介 网上讲解设置方法注释模板的文章很多,尝试了很多方法后,发现在方法体外生成的模板入参值和返回值都是null,而放到方法体内的入参值和返回值就可以自动生成.苦试N次,终于发现诀窍.Idea的这 ...

  6. DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况

    1. 返回值为空的情况 出现返回值为空的情况是因为数据的类型不是数值型.用data.info()函数可以查看dataframe的信息.这里举个例子: ###创建一个dataframe,数据类型为obj ...

  7. redis有值查询返回null_redis运行lua脚本hmget返回值为空判断问题-Go语言中文社区...

    1.redis中准备测试数据 hmset test abcd 123 ABCD 456 hgetall test 2.网上有人说用内置函数next()判断 redis-cli -c -p 8000 - ...

  8. navicat存储过程返回值为空_Excel VBA解读(128):Function过程详解——枯燥的语法...

    学习Excel技术,关注微信公众号: excelperfect 在<Excel VBA解读(27):看看VBA的Sub过程和Function过程>中,我们讲解了Function过程的基本形 ...

  9. 【JavaScript编程】window.location.search 返回值为空

    一.Location 对象 window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. 二.属性hash和search的区别 属性 描述 location.h ...

最新文章

  1. 怎样调用php的足球联赛接口,足球赛事查询接口调用文档
  2. torchvision nms
  3. android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...
  4. 关于自然语言处理,有一本通关手册待接收
  5. day3-文件操作之基本操作
  6. Oracle优化笔记
  7. 安卓平板usb变显示器_RJ45与USB信号接入工业显示器有何不同?
  8. 给文章中重复标签排序
  9. python下读sougou中文语料文件
  10. Code Snippets for Windows Mobile 5 in C#
  11. 漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)
  12. java中gc是什么_java什么是gc
  13. [Python] 从ip138网站爬取ip所处地点
  14. Adobe Premiere Pro cs6 精简版 0xc000007b 应用程序无法正常启动
  15. 【语音之家】AI产业沙龙—— 网易语音AI技术:从内容安全到内容品质
  16. Microsoft Word 教程「4」,如何在 Word 中应用样式、主题?
  17. 阿里王坚眼中的互联网、数据和AI
  18. 英语口语428之每日二十个英语单词
  19. 上不了网,代理服务器出现问题
  20. git远程仓库的创建(养成好的习惯,小马教你提交代码到远程仓库中)

热门文章

  1. mac pro 触摸板按住选中失效
  2. PHPICP备案查询接口源码
  3. SpringCloud SpringBoot uniapp vue b2b2c 微服务 多商家入驻直播带货商城 分销商城 秒杀 高并发电商之策略模式
  4. javascript insertBefore( )
  5. CodeForces 235C Cyclical Quest (后缀自动机)
  6. UE4之显示游戏帧数
  7. 《跨境电商 —— 阿里巴巴速卖通实操全攻略》一一2.4 淘代销
  8. 益聚星荣:卖衣服不如卖房?波司登、鸿星尔克纷纷出手…
  9. 如何做好微信公众号运营方案,需要做好这五点工作
  10. Html 空格与换行