SqlServer数据库的一些方法的用途
一直分不清这三种方法的具体用法现在终于找齐了
ExecuteNonQuery方法和ExecuteScalar方法和ExecuteReader方法的区别
(1)ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),那么方法将返回操作所影响的记录条数。
(2)ExecuteScalar():执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行和列。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。如果SQL语句不是SELECT查询,则返回结果没有任何作用。
------【分析】
命令对象的ExecuteNonQuery()方法用于执行任何不从数据库返回结果集的SQL操作命令,包括INSERT INTO、UPDATE、DELETE语句、没有返回数值的存储过程、CREATE TABLE和CREATEINDEX之类的DDL语句。ExecuteNonQuery方法还可用来执行目录操作,例如查询数据库的结构或创建诸如表等的数据库对象。ExecuteNonQuery方法对于UPDATE、INSERT INTO和DELETE这些操作语句,其返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1。
假设cmd为SQL SERVER数据提供者的命令对象(即SqlCommand),cn为连接对象(保持打开状态),调用ExecuteNonQuery方法如以下代码所示。
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
//设置cmd的命令文本,本例为删除Table1表中id字段值大于1的记录
cmd.CommandText = “DELETE FROM Table1 WHERE [id]>1”;
int count = cmd.ExecuteNonQuery();
以上代码中,创建了SqlCommand类型的命令对象cmd,设置其连接为连接对象cn,SQL命令文本为某个SQL语句(一般为增、删、改命令)。执行ExecuteNonQuery方法后,命令文本即通过连接对象作用到数据库中,其返回值count则为数据库中受到影响的数据记录数量。
命令对象的ExecuteScalar()方法由于只能返回数据集的第1行第1列,所以常被用于执行聚合函数。假设cmd为SQL SERVER数据提供者的命令对象(即SqlCommand),cn为连接对象(保持打开状态),调用ExecuteScalar方法如以下代码所示。
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
//设置cmd的命令文本,本例为查询Table1表中记录的数量
cmd.CommandText = “SELECT COUNT(*) FROM Table1”;
int count = (int)cmd.ExecuteScalar();
以上代码中,创建了SqlCommand类型的命令对象cmd,设置其连接为连接对象cn,SQL命令文本为某个SQL语句。由于返回值为object类型,所以需要进行强制转换,count变量即存储了所需数据表中记录的数量。
(3)ExecuteReader():我们通常在asp中用Recordset对象来从数据库中读出数据,并且用
循环语句来一个一个的读出数据,但在我们的ADO.NET中,我们就是用DataReader 对象的
ExecuteReader()方法来进行数据的列出,并且我们用这个ExecuteReader()方法来显示数据
是最快的一种方法,因为当我们在用ExecuteReader()方法中的DataReader 对象来进行数据
的在网站建设中显示时,他只可以一条一条向前读,不能返回,也就是像ASP中的ADO方法
中的Recordset 对象的Movenext一样,他没有move -1这样的返回方法。
说明:如果没有数据可操作,那么只能使用调用命令对象的ExecuteReader方法,返回一个数据读取器(DataReader对象)。因为 ExecuteNonQuery()与ExecuteScalar()在没有数据的时候调用时,就会出现“对象没有实例化”的错误。所以在判断是否有数据时,应该调用数据读取器的Read()方法来检测。
SqlServer数据库的一些方法的用途的更多相关文章
- SQLServer数据库及注入方法
目录 SQLServer数据库 SQLServer数据库的查询语句 SA权限开启xp_cmdshell获取主机权限 盲注SQLServer数据库 SQLServer数据库 SQL Server数据库是 ...
- SQLServer数据库字典维护方法
启用SQLServer启用管理器,以2008为例 1.设置表信息描述 选中要设置的表,右键点击“属性” . 选择扩展属性 填写要求: 名称:MS_Description 值: 模块名称-表名称 修改语 ...
- SQLSERVER数据库迁移的方法
数据库迁移两种方案:https://www.cnblogs.com/mcgrady/p/7614491.html 方案一 1,先将源服务器上的数据库文件打包(包括mdf和ldf文件),并且复制到目标服 ...
- 获取sqlserver数据库中所有库、表、字段名的方法
获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...
- 设置SQLServer数据库中某些表为只读的多种方法
原文:设置SQLServer数据库中某些表为只读的多种方法 翻译自:http://www.mssqltips.com/sqlservertip/2711/different-ways-to-make- ...
- 命令行下从bak文件恢复sqlserver数据库方法
命令行下从bak文件恢复sqlserver数据库方法 注:本文所示访问从SqlServer 2000 - 2014版都是通用的 参考:http://blog.sina.com.cn/s/blog_5c ...
- SqlServer数据库全角和半角互转的方法
---摘要: SqlServer数据库全角和半角互转的方法 CREATE FUNCTION f_Convert( @str NVARCHAR(4000), --要转换的字符串 @flag bit -- ...
- Expression构建DataTable to Entity 映射委托 sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。 sql server 多行数据合并成一列 C# 字符串大写转小写,小写转大写,数字保留,其他除外 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法 纯CSS打造淘宝导航菜单栏 C# Winform
Expression构建DataTable to Entity 映射委托 1 namespace Echofool.Utility.Common { 2 using System; 3 using ...
- python学习--python 连接SQLServer数据库(两种方法)
1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...
随机推荐
- 什么是实时应用程序自我保护(RASP)?
什么产品可以定义为 RASP? RASP 英文为 Runtime application self-protection,它是一种新型应用安全保护技术,它将保护程序想疫苗一样注入到应用程序和应用程序融 ...
- 练习-libev和pyev示例
事件循环,IO复用,还是理解深刻一点好. 比较LIBEV和PYEV,发现PYTHON库只是对LIBEV作了简单的语法转换. 到了这个层次,就一个字:DIAO!!! libev的C版: #include ...
- char 和 varchar
固定长度或可变长度的字符数据类型. char [ ( n ) ] 固定长度,非 Unicode 字符数据,长度为 n 个字节.n 的取值范围为 1 至 8,000,存储大小是 n 个字节.char 的 ...
- 点点滴滴-NET下的常用框架
刘冬的博客:http://www.cnblogs.com/GoodHelper/category/214139.html (Spring.net和Nhibernate) Kyo-yo : http: ...
- 【HDOJ】1073 Online Judge
这道题TLE了N多次,完全不明白为什么,稍微改了一下,居然过了.使用gets过的,看讨论帖有人还推荐用hash. #include <stdio.h> #include <strin ...
- ERP 推式 拉式 工序拉式 装配拉式 倒冲
ERP 推式 拉式 工序拉式 装配拉式 倒冲 以上為生产订单(wip)中的原料供应方式,最常用的有Pull和Push. PULL即拉动方式: 拉式生产是生产为主,原材料是由专门的配送人员按 ...
- mysql show variables系统变量详解
mysql系统变量详解 mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选 ...
- USACO3.22Stringsobits
DP预处理出来 i位不超过j的个数 然后再进行从小到大找第一个比I大的 然后用I减掉上一个比I小的 剩余的按照之前的方法循环找 知道剩余为0 细节挺繁琐的 对照数据改了又改 最后一组数据还超 了int ...
- hadoop 序列化源码浅析
1.Writable接口 Hadoop 并没有使用 JAVA 的序列化,而是引入了自己实的序列化系统, package org.apache.hadoop.io 这个包中定义了大量的可 ...
- web项目测试方法总结
在Web工程过程中,基于Web系统的测试.确认和验收是一项重要而富有挑战性的工作.基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览 ...