SqlDataReader 类

SqlDataReader类实现只向前、只读的游标样式模型,读取并遍历SQL Server返回的结果集。创建 SqlDataReader对象必须用 SqlCommand 对象的 ExecuteReader 方法来实例化SqlDataReader。

如: SqlDataReader rdr = cmd.ExecuteReader();//来实例化SqlDataReader。

1、SqlDataReader对象的特点

(1)SqlDataReader对象只能向前读取数据。也就是只能往下读知道读完,而不能回头读取先前的记录。

(2)SqlDataReader对象是只读的,不能对其中的结果集进行修改或删除。

(3)SqlDataReader对象只能直接将结果集传递给显示对象,而不能在IIS的内容中保持数据。

(4)SqlDataReader通过Boolean方法Read逐条访问记录,Read返回false则不再有数据读取。

2、SqlDataReader的属性

QQ截图未命名

 

3、使用SqlDataReader对象时注意点

(1)当使用完SqlDataReader对象时应立即调用close()方法将其关闭。(因为在未关闭之前,与SqlDataReader对象关联的 SqlConnection 一直为其服务,对 SqlConnection 无法执行任何其他操作)。

(2)当创建多个SqlDataReader对象时必须每个对象创建一个SqlConnection 连接对象。(因为一个SqlConnection 连接对象只能被一个SqlDataReader对象使用)。

(3)如果实例化SqlDataReader对象的是存储过程的返回值或输出参数时,须调用SqlDataReader的Close()方法后才能准确的获得存储过程的返回值或者输出参数。

(4)如果要在SqlDataReader对象中的数据未读取完之前关闭SqlDataReader对象,则应Command对象的Cancel()方法,然后再关闭SqlDataReader对象。

(5)读取SqlDataReader对象时尽量使用和数据库字段类型匹配的方法,以减少类型转换。

4、实例

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.SqlClient;

 

namespace sqlconnection1

{

    class Program

    {

        private void SQLConnectionF(string source, string select)

        {

            SqlConnection con = new SqlConnection(source);

            try

            {

                con.Open();

                Console.WriteLine("connection is successful!");

            }

            catch (Exception e)

            {

                Console.WriteLine("connection error is :{0}", e.ToString());

 

            }

            SqlCommand sqlcmd = new SqlCommand(select, con);

            SqlDataReader reader = sqlcmd.ExecuteReader();

 

            while (reader.Read())

            {

                Console.WriteLine("name:{0,-20} number{1,-10} low:{2,-10} high:{3}", reader[0], reader[1],reader[2],reader[3]);

            }

 

            Console.ReadLine();

            con.Close();

        }

        static void Main(string[] args)

        {

            string sou = "server=duanyf//SQLEXPRESS;" + "Initial Catalog=master;" + "UID = sa;"+"Password = dyf123";

            string sel = "SELECT name,number,low,high From dbo.spt_values";

            Program sqlcon = new Program();

            sqlcon.SQLConnectionF( sou,sel);

 

         

         

        }

    }

}

原文地址:https://www.cnblogs.com/dyufei/p/2573963.html