• 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;pwd=lixiang@");

    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

  • 相关阅读:
    DropDownList判断值是否存在下拉列表中
    postgre教程
    Cookie seesion 赋值
    Winform定时启动
    ASP.NET数据绑定控件
    ASP.NET常用数据绑定控件优劣总结
    Cards and Joy (dp好题)
    River Hopscotch (二分)
    剪花布条(KMP入门)
    GCD (区间数的质因子打表+容斥原理)
  • 原文地址:https://www.cnblogs.com/wuyuankun/p/3736289.html
Copyright © 2020-2023  润新知