ExecuteNonQuery,ExecuteReader,ExecuteScalar 区别

转载 2012年02月15日 14:02:08

ExecuteNonQuery方法 :执行非查询SQL操作,包括增insert、删delete、改update
ExcuteReader方法 :执行查询,返回DataReader,通过DataReader的对象dr["列名"]
可以取得数据,一次读一行,可以通过while(dr.Read())进行循环读取
ExecuteScalar方法 :执行查询,只返回一个数据

在连接SQL Server数据库:首先创建SqlConnection类和SqlCommand类实例分别用于连接到SQL Server数据库和执行SQL语句命令,然后打开数据连接并使用SqlCommand的相应方法执行SQL语句。
ExecuteNonQuery()方法执行SQL语句并且不返回数据;
ExecuteReader()方法将SQL语句发送给SqlConnection并生产一个SqlDataReader类对象,该SqlDataReader对象包含SQL命令返回的数据;
ExecuteScalar()方法执行SQl查询,并返回查询结果集中的第一行的第一列,忽略额外的列或行!

例如:
SqlConnection MyConncetion = new SqlConnection(m_SqlConnection);
SqlCommand MyCmd = new SqlCommand(p_StrSql, MyConncetion);
一:
MyConncetion.Open();
MyCmd.ExecuteNonQuery();
二:
MyConncetion.Open();
SqlDataReader MyReader = MyCmd.ExecuteReader();
            if (MyReader.Read())
            {
                return 0;
            }
            else
            {
                throw new Exception("Value Unavailable!");
            }
三:
MyConnection.Open();
SqlDataAdapter SqlDa = new SqlDataAdapter(p_StrSql, MyConnection);
DataSet Ds = new DataSet("ds");
SqlDa.Fill(Ds);

四:


MyConncetion.Open();
object r = MyCmd.ExecuteScalar();
            if (object.Equals(r, null))
            {
                throw new Exception("Value Unavailable!");

            }
            else
            {
                return (int)r;

            }

注意:ExecuteReader() 方法需要配合 SqlDataReader 对象使用,执行得到的数据集为只读且光标只能从前向后移动。

            

string oSql = "select id, password, name, level    from verify";SqlCommand comm = new SqlCommand(oSql, con);con.Open();//在调用方法前打开数据库连接,可以减少数据库连接所花的时间,节省数据库资源。SqlDataReader dr = comm.ExecuteReader ();While(dr.Read()){    String id = "";    id = dr[0].ToString(); //(0为第一列)    //或 id=dr["id"].ToString();(引用字段名)    //或id= dr.GetString (dr.GetOrdinal ("id"));}//在读取数据结束后才能关闭数据库,因为 SqlDataReader 对象的数据源必须保持数据库连接。con.Close();

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyujie1219/archive/2009/07/26/4380956.aspx


编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释

在学杨中科老师的编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题...
  • u012688910
  • u012688910
  • 2014年06月01日 19:30
  • 1149

C# 从数据库中读取数据(ExecuteReader)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin...
  • houyanhua1
  • houyanhua1
  • 2017年12月13日 14:15
  • 141

黑马程序员_ADO.Net(ExecuteReader,Sql注入与参数添加,DataSet,总结DataSet与SqlDataReader )

一.执行有多行结果集的用ExecuteReader SqlDateReader reader=cmd.ExecuteReader();//查询结果在数据库中,不占客户端电脑内存 While(reade...
  • u010796875
  • u010796875
  • 2013年12月17日 23:47
  • 1145

C# 连接MYSQ示例(全面)

先下载和安装MySQLDriverCS  http://sourceforge.net/projects/mysqldrivercs/ 在安装文件夹下面找到MySQLDriver.dll,然后将My...
  • w605283073
  • w605283073
  • 2015年02月09日 15:36
  • 738

sqllite (2) - c# .net 使用 sqllite 增删改查操作数据库

sqllite (2) - c# .net 使用 sqllite 增删改查操作数据库 环境配置: 开发环境:vs2013 运行时版本:framework 4.0  sqllite 版本:非混合模式...
  • xxj_jing
  • xxj_jing
  • 2016年09月06日 18:00
  • 676

方法名前 添加static的奥妙之处

namespace ADO_NetConnection{    class Program    {        static void Main(string[] args)        {  ...
  • chengyuanJJ
  • chengyuanJJ
  • 2013年09月02日 12:26
  • 1079

注意 ExecuteNonQuery() 返回值 问题

先前做一些数据项目的时候 在ADO.NET 中处理 ExecuteNonQuery()方法时,总是通过判断其返回值是否大于0来判断操作时候成功 。但是实际上并不是这样的,好在处理的数据操作多时 修改,...
  • han_yankun2009
  • han_yankun2009
  • 2013年03月06日 22:50
  • 1237

四个DBHelper实现

0. 建一个通用的处理数据的类 [csharp] view plaincopyprint? using System;  using System.Data;  us...
  • GoodShot
  • GoodShot
  • 2015年01月05日 09:34
  • 1097

注意 ExecuteNonQuery() 返回值 问题

前些日子作一些数据项目的时候 在ADO.NET 中处理 ExecuteNonQuery()方法时,总是通过判断其返回值是否大于0来判断操作时候成功 。但是实际上并不是这样的,好在处理的数据操作多时 修...
  • shengerjianku
  • shengerjianku
  • 2015年07月24日 16:52
  • 225

连接数据库,OleDbDataReader读取mdb的数据

去年下半年用VB6弄了简单的串口通信,现在看过去仿佛动物进化史.. 年初开始每月交报表,手算个破表耗掉两三个钟,交上去要审核再算一遍。去尼玛的时间! 为效率,人士推荐用了WPF。鼓捣了俩月,现在用...
  • afadasdas
  • afadasdas
  • 2016年04月10日 22:03
  • 369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ExecuteNonQuery,ExecuteReader,ExecuteScalar 区别
举报原因:
原因补充:

(最多只允许输入30个字)