C#利用SqlDataReader读取SQL Server数据表

介绍

可以用SqlDataReader类对象从SQL Server数据库中读取行

DataReader对象允许你以向前的,只读的方式读取数据,有时候DataReader对象也称为消软管游标。DataReader对象采用了一种简化的数据读取方式,但是提高了性能的同时也牺牲了很多特性。例如在DataSet中支持的排序,分页等功能。

属性

属性介绍
Connection获取与 SqlConnection 关联的 SqlDataReader。
HasRows获取一个值,该值指示 SqlDataReader 是否包含一行还是多行。
IsClosed检索一个布尔值,该值指示是否已关闭指定的 SqlDataReader 实例。

方法

方法介绍
Close()关闭 DbDataReader 对象。
Read()让 SqlDataReader 前进到下一条记录。

典型事例

我们在SQL中新建一个表:
在这里插入图片描述
在这里插入图片描述
新建一个C#窗体应用插入一个listview
属性View设为Details
在这里插入图片描述

添加命名空间:

using System.Data.SqlClient;

窗体加载事件中输入以下代码:

string constr = "Server=数据名;uid=用户名;pwd=密码;DataBase=Management";
            // 建立SqlConnection对象
            SqlConnection con = new SqlConnection(constr);
            con.Open();
            //执行con对象的函数,返回一个SqlCommand类型的对象
            SqlCommand cmd = con.CreateCommand();
            //把输入的数据拼接成sql语句,并交给cmd对象
            cmd.CommandText = "select*from tb_User";
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                //构建一个ListView的数据,存入数据库数据,以便添加到listView1的行数据中
                ListViewItem lt = new ListViewItem();
                //将数据库数据转变成ListView类型的一行数据              
                lt.Text = dr["UserName"].ToString().Trim();
                lt.SubItems.Add(dr["Userpwd"].ToString().Trim());
                lt.SubItems.Add(dr["Note"].ToString().Trim());
                listView1.Items.Add(lt);                
            }
            dr.Close();
            con.Close();

运行结果:
在这里插入图片描述

注释

若要创建 SqlDataReader ,必须调用对象的 ExecuteReader 方法 SqlCommand ,而不是直接使用构造函数。
如果正在 SqlDataReader 使用,则关联的 SqlConnection 忙于提供服务 SqlDataReader ,并且除关闭外,不能在其他操作上执行任何其他操作 SqlConnection 。 在调用的方法之前,会出现这种情况 Close SqlDataReader 。 例如,在调用之后,才能检索输出参数 Close 。

posted @ 2022-04-30 21:24  刘火火学电脑  阅读(515)  评论(0编辑  收藏  举报