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 。