用于执行查询语句并返回一个DataReader类型的行集合.
在与数据库交互中,要获得数据访问的结果可用连载方法实现,一个是datareader对象从数据源中获得数据并进行处理;另一种是通过dataset对象将数据存放在内存中进行处理
datareader可以顺序地查询结果集中读取记录,他的特点是单向向前,速度快占用内存少。使用datareader对象无论在系统开销还是在性能方面都很有效,他在任何时候只能缓存一条记录,并且没有将整个结果写入内存,从而避免内存大量使用,提高了系统性能。
主要方法有getname 取得字段名称,read读取下一条记录,返回值为布尔类型,下一条存在就是true,不存在就是false,一般使用weile循环读取整个数据。
using System.Data; using System.Data.SqlClient; public partial class test3 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); con.ConnectionString = "server=.;database=航空订票系统;uid=sa;pwd=;"; SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = "select * from 用户表"; try { con.Open(); SqlDataReader reader = cmd.ExecuteReader(); Response.Write("用户编号" + " " + "用户名" + "<br>"); while (reader.Read()) { Response.Write(reader[0] + " " + reader[1] + "<br>"); } reader.Close(); con.Close(); } //finally // { // } catch (Exception) { Response.Write("数据库访问异常,请重试"); con.Close(); } } }
reader[0] 表示当前记录的第一个字段,[1]即第二个字段,reader[0]也可以写成reader[“字段名称”],或者写成 reader.getbalue(0)
reader.close() 关闭读取器对象
read方法用来遍历整个结果集,不需要指定向前移动指针,系统判断有无记录,有记录继续读取,无记录返回false 结束while语句。
定义sqldatareader对象时需要使用sqlconmand对象的executereader方法初始化。