ExecuteReader

最近在做winform的编程,想到一真没有使用过ExecuteReader。可能以前以后它的用户不大,或者

不大好用,故没有用过。今天在这里将学习记录写下来,供读者参考:

1、MSDN上说:Sends the CommandText to
the Connection and
builds a SqlDataReader.

(这句话就不翻译了)

2、实例片段:

[C#] 
public void
CreateMySqlDataReader(string mySelectQuery, SqlConnection
myConnection) 
{

string sql;//sql语句
    SqlCommand myCommand = new
SqlCommand(sql, myConnection);
   
myConnection.Open();
    SqlDataReader
myReader;
    myReader =
myCommand.ExecuteReader();
    try
   
{
     
while(myReader.Read()) 
     
{
       
Console.WriteLine(myReader.GetString(0));
     
}
    }
    finally
   
{
     
myReader.Close();
     
myConnection.Close();
    }
}

3、下面说说它的用法:

①:

用法:ExecuteReader 方法存在的目的只有一个:尽可能快地对数据库进行查询并得到结果。ExecuteReader
返回一个                
DataReader对象:如果在SqlCommand对象中调用,则返回SqlDataReader;如果在OleDbCommand对象中调用,返回的是OleDbDataReader。可以调用DataReader的方法和属性迭代处理结果集。它是一个快速枚举数据库查询结果的机制,是只读、只进的。对SqlDataReader.Read的每次调用都会从结果集中返回一行。

②:

这是出自我平时所用的时候的一些认识:那就是如果我们在进行数据操作时,如果没有数据可操作,那么我们只能使用ExecuteReader()这个CMD,而executeNoeQuery()与Executescalar()如果在没有数据的时候使用时,就会出错“对像没有实例化”的错误。所以我们在判断是否有数据时,只可以用ExecuteReader()中的REad()方法来检测。

④:

DataReader还有一个GetValue方法可以用来检索字段的值。GetValue返回一个一般性的Object,但是被无数个返回强类型的Get方法补充,比如GetInt32和GetDecimal(参考MSDN2005)。对GetOrdinal的调用是必须的,因为GetDecimal只接受整型索引。GetOrdinal所做的工作正好与GetName相反——它把字段名转换成数字索引。

注意:DataReader必须处理Close方法。

using System.Data.SqlClient;

...

SqlConnection conn = new
SqlConnection(@"server=ws7/leosql;database=AdventureWorks;uid=sa;[email protected]");

try

{

conn.Open();

SqlCommand cmd = new SqlCommand("SELECT * FROM titles WHERE advance != 0",
conn);

SqlDataReader reader = cmd.ExecuteReader();

int index = reader.GetOrdinal("advance");

while(reader.Read())

Console.WriteLine("{0:c}", reader.GetDecimal(index));

=================================

-- Console.WriteLine(reader.GetName(0));

=================================

‘‘reader.Close();‘‘

}

catch(SqlException ex)

{

Console.WriteLine(ex.Message);

}

finally

{

========================================================

-- 可以配置DataReader,使它真的可以关闭一个底层连接

-- reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

========================================================

conn.Close();

}

⑤:

现在来强调下:现在来说下ExecuteReader的read()方法,它就是读取一个表的记录,即执行读,每次调用都是返回一行的结果集。

一般用在判断这行的结果集是否有效果,有的话就执行下面的操作。一句话:一般用于判断返回的结果。
完:请高手给予指点

http://blog.csdn.net/zhchongyao/article/details/5544960

时间: 2024-10-17 08:03:28

ExecuteReader的相关文章

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对 象提供了“游标”形式的读取方

ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法的区别

关于MyCommand的ExecuteNonQuery(),ExecuteScalar(),ExecuteReader方法的区别: 1.ExecuteNonQuery():执行SQL,返回一个整型变量,如果SQL是对数据库的记录进行操作,那么返回操作影响的记录条数,如果是SQL="CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NUL

ExecuteReader方法

ExecuteReader() 方法 解释1:将SQL语句发送到指定连接 生成一个SqlDataReader对象           解释2:当ExecuteReader()执行后返回一个SqlDataReader对象           两种解释实际上都在说明些方法就是给SqlDataReader对象一个可以访问查询到的结果的渠道. 程序执行分析1.首先需要new一个SqlDataReader对象.接收ExecuteReader()执行后返回的SqlDataReader对象.2.SqlData

如果分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化

{System.InvalidOperationException: 如果分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务.命令的 Transaction 属性尚未初始化. 在 System.Data.OleDb.OleDbConnectionInternal.ValidateTransaction(OleDbTransaction transaction, String method) 在 System.Data.OleDb.OleDbConnection.Va

假设分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化

{System.InvalidOperationException: 假设分配给命令的连接位于本地挂起事务中.ExecuteReader 要求命令拥有事务.命令的 Transaction 属性尚未初始化. 在 System.Data.OleDb.OleDbConnectionInternal.ValidateTransaction(OleDbTransaction transaction, String method) 在 System.Data.OleDb.OleDbConnection.Va

C#------ExecuteReader

class Program { static void Main(string[] args) { //连接数据库 using( MySqlConnection conn = new MySqlConnection("Server=localhost; Database=study; uid=root; pwd=root; Charset=utf8;") ) //创建数据库对象 using (MySqlCommand cmd = conn.CreateCommand()) { conn

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

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

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

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

ExecuteNonQuery,ExecuteReader,ExecuteScalar 区别

ExecuteNonQuery方法 :执行非查询SQL操作,包括增insert.删delete.改update ExcuteReader方法 :执行查询,返回DataReader,通过DataReader的对象dr["列名"] 可以取得数据,一次读一行,可以通过while(dr.Read())进行循环读取 ExecuteScalar方法 :执行查询,只返回一个数据 在连接SQL Server数据库:首先创建SqlConnection类和SqlCommand类实例分别用于连接到SQL S