ExecuteNonQuery,ExecuteReader,ExecuteScalar 区别

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

原文地址:https://www.cnblogs.com/asdyzh/p/9749325.html

时间: 2024-10-12 15:45:40

ExecuteNonQuery,ExecuteReader,ExecuteScalar 区别的相关文章

问题:ExecuteNonQuery 与 ExecuteScalar 结果: ExecuteNonQuery方法和ExecuteScalar方法的区别

ExecuteNonQuery方法和ExecuteScalar方法的区别 ----ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加.删除和更新),那么方法将返回操作所影响的记录条数. ----ExecuteScalar():执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略 其他的行 和列.该方法所返回的结果为object类型,在使用之前必须强制转换为所

C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?

对于C#初学者来说,我们通常遇到ExecuteReader.ExecuteNonQuery.ExecuteScalar.SqlDataReader.SqlDataAdapter这些对象或者方法的时候就开始犯晕,不知道哪个对象适合用增删改,哪个对象适合查询的时候用,本人通过 网上搜索和个人的一些理解,整理了一下,有错误的地方希望大家能给出指正. 一.//数据库连接字符串    private readonly static string connectionString =      Config

Sql_server四种执行ExecuteReader、ExecuteNonQuery、ExecuteScalar、DataSet.docx

c#数据查询输出 2012-07-17 17:07 1.使用ExecuteReader()操作数据库 2.使用ExecuteNonQuery()操作数据库 3.使用ExecuteScalar()操作数据库 4.使用DataSet数据集插入记录.更新数据. 1.使用ExecuteReader()操作数据库,执行查询操作的利器 ExecuteReader相比与DataSet而言,DataReader具有较快的访问能力,并且能够使用较少的服务器资源.DataReader对 象提供了“游标”形式的读取方

C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter的区别

ExecuteNonQuery()执行命令对象的SQL语句,返回一个int 类型的变量,返回数据库操作之后影响的行数.适合用来验证对数据库进行增删改的情况. 2.ExecuteScalar()也可以执行sql语句.如果SQL语句是Select查询,则仅仅返回查询结果集中第一行第一列,而忽略其他行和列.如果SQL语句不是Select查询,则这个返回结果没任何作用.(建议查询数据库时使用) 由于不知道sql语句到底是什么样的结构(有可能是int,有可能是Char等其它,)所以ExecuteScala

(转载)何时用ExecuteDataSet / ExecuteReader() / ExecuteScalar

1.ExecuteDataset ExecuteDataset会运行你的基本SELECT(选择)查询并生成一个DataSet,然后就能够被绑定到服务器对象上,或者被用来创建DataView(数据视图). public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCom

2017.11.01 ExecuteNonQuery、ExecuteScalar、ExecuteDataSet、FillDataSet 流程

1 根据连接字符串获取IDbConnection连接对象2 connection.Open();打开连接对象3 创建IDbCommand命令对象4 将命令类型.命令sql.事务.参数赋值到IDbCommand对象5 处理命令sql字符串和参数名称中'@'.':'的问题6 执行命令 1 针对ExecuteDataSet查询sql需要再获取IDbDataAdapter对象后再执行命令 da.SelectCommand = cmd; 11 针对FillDataSet需要根据参数表名称映射到数据集表中

链接SQL、事务---小总结

ADO.NET两个命名空间,三个类.一.两个命名空间:using System.Data;using System.Data.SqlClient; 二.三个类:SqlConnection SqlCommand SqlDataReader (一)SqlConnection链接类1.构造链接字符串的写法:server=服务器IP或服务器名;database=数据库名;uid=用户名;pwd=密码server=.;database=mydb;uid=sa;pwd=123Data Source=.;In

数据访问-----ADO.NET 小结和练习

ADO.NET两个命名空间,三个类.一.两个命名空间:using System.Data;using System.Data.SqlClient; 二.三个类:SqlConnection    SqlCommand    SqlDataReader (一)SqlConnection链接类1.构造链接字符串的写法:server=服务器IP或服务器名;database=数据库名;uid=用户名;pwd=密码server=.;database=mydb;uid=sa;pwd=123Data Sourc

数据访问知识框架

ADO.NET两个命名空间,三个类.一.两个命名空间:using System.Data;using System.Data.SqlClient; 二.三个类:SqlConnection    SqlCommand    SqlDataReader (一)SqlConnection链接类1.构造链接字符串的写法:server=服务器IP或服务器名;database=数据库名;uid=用户名;pwd=密码server=.;database=mydb;uid=sa;pwd=123Data Sourc