DataReader对象读取数据

6.2.3 使用DataReader对象读取数据

DataReader对象简介

DataReader对象又称数据阅读器,是DBMS所特有的,常用来检索大量的数据。DataReader对象是以连接的方式工作,它只允许以只读、顺向的方式查看其中所存储的数据,并在ExecuteReader方法执行期间进行实例化。

根据.NET Framework数据提供程序不同,DataReader也可以分成SqlDataReader、OleDbDataReader等。DataReader与底层数据库密切相联,它实际上是一个流式的DataSet。可以参照下一节的DataSet对象与之比较学习,下面我们将着重介绍SqlDataReader。

 

 

SqlDataReader对象常用属性

 

SqlDataReader对象常用属性如下:

 

 

  

FieldCount

获取当前行的列数

RecordsAffected

获取执行SQL语句所更改、添加或删除的行数

表6.5 SqlDataReader对象常用属性

 

SqlDataReader对象的常用属性详解:

 

l   FieldCount属性

获取DataReader对象中有几行数据,默认值为-1。如果未放在有效的记录集中,属性值则为0;否则为当前行中的列数。

 

l   RecordsAffected属性

直到所有的行都被读取并且数据阅读器已经关闭时,才设置RecordsAffected属性,其默认值为−1。该属性的值是累积值。例如,如果以批处理模式插入3个记录,则RecordsAffected属性的值将为3。

 

SqlDataReader对象常用方法

 

SqlDataReader对象常用方法如下:

 

 

  

Read

使DataReader对象前进到下一条记录(如果有)

Close

关闭DataReader对象。注意,关闭阅读器对象并不会自动关闭底层连接

Get

用来读取数据集的当前行的某一列的数据数据

表6.6 SqlDataReader对象常用方法

 

 

SqlDataReader对象常用方法详解:

 

l   Read方法

语法:public override bool Read ()

返回值:如果存在多个行,则为True;否则为False。

DataReader对象中的Read()方法用来遍历整个结果集,不需要显示地向前移动指针,或者检查文件的结束,如果没有要读取的记录了,则Read方法会自动返回False。

 

 

  注意:要使用SqlDataReader,必须调用SqlCommand对象的ExecuteReader()方法来创建,而不要直接使用构造函数。

 

SqlDataReader对象的应用

实例6.6 使用SqlDataReader对象读取数据(源程序详见光盘中例6.6)

本示例主要讲解在ASP.NET应用程序中如何使用SqlDataReader对象读取数据库中的数据。执行程序,运行结果如图6.11所示:

 

图6.11 读取数据的结果图

 

 

程序实现的步骤:

(1)、新建一个网站,默认主页是Default.aspx。

 

(2)、在Web.Config文件中配置数据库连接字符串,在<configuration>下的子配置节<connectionStrings>添加连接字符串。

 

(3)、向Default.aspx页中添加一个label控件将其命名为lblStudent,在Page_Load中写下如下代码:

 

protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            SqlConnection myConn = GetConnection();

            string sqlStr = "select * from tbStudent";  //查询所有学生信息的SQL

            SqlCommand myCmd = new SqlCommand(sqlStr, myConn);//创建Command对象

            try

            {

                myConn.Open();

                //执行SQL语句,并返回DataReader对象

                SqlDataReader myDr = myCmd.ExecuteReader();

                //显示标题文字

                this.lblStudent.Text = "&nbsp&nbsp&nbsp学号 

                                  &nbsp&nbsp&nbsp 姓名

              &nbsp&nbsp&nbsp 性别

            &nbsp&nbsp&nbsp 班级

             &nbsp&nbsp&nbsp 系别<br>";

              while (myDr.Read())          //循环读取结果集

                {

                       //读取数据库中的信息并显示在界面中

                      this.lblStudent.Text +=myDr["sno"].ToString().Trim()

      + "&nbsp&nbsp&nbsp&nbsp"

                           + myDr["sname"].ToString().Trim()+ "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp"+ myDr["ssex"].ToString().Trim()+ "&nbsp&nbsp&nbsp&nbsp"+ myDr["sclass"].ToString().Trim()

          + "&nbsp&nbsp&nbsp&nbsp" +myDr["sdept"].ToString().Trim()+"</br>";

                }

                myDr.Close();            //关闭DataReader

            }

            catch

            {

                Response.Write("连接失败!"); //异常处理

            }

            finally

            {

                myConn.Close();      //关闭数据库连接

            }

        }

}

 

posted @ 2016-09-01 10:23  unsignedu  阅读(190)  评论(0)    收藏  举报