对数据库中的数据索引,有两种方式,即分别通过数据适配器DataAdapter或者数据阅读器DataReader将数据读取出来放在控件中显示 出来或进行处理,一般DataReader配合DataCommand使用,主要是对DataReader实例化。
使用数据适配器DataAdapter读取数据示例:
protected void Button1_Click(object sender, EventArgs e)
{
string ConnectionString = "Data Source=localhost Integrated Security=SSPI;Database=student;connect Timeout=30;Pooling=true;";//使用windows登陆
SqlConnection conn = new SqlConnection(ConnectionString);//创建连接对象conn
SqlDataAdapter da=new SqlDataAdapter("select * from student-info",conn);//创建一个数据适配器对象da,用于读取student中的数据表student-info;
DataSet ds = new DataSet();//创建数据集ds;
conn.Open();//打开连接
da.Fill(ds);//将检索中的数据填充到ds数据集中
conn.Close();//关闭连接
this.ListBox1.DataSource = ds;//设置控件listbox1的数据源
this.ListBox1.DataTextField = "stud_name";//设置控件listbox要显示的文本
this.ListBox1.DataBind();//通过databind方法将数据绑定到控件
}
 
使用数据适配器DataReader读取数据示例:
protected void Button2_Click(object sender, EventArgs e)
{
string ConnectionString = "Data Source=localhost Integrated Security=SSPI;Database=student;connect Timeout=30;Pooling=true;";//使用windows登陆
SqlConnection conn = new SqlConnection(ConnectionString);//创建连接对象conn
SqlCommand comm = new SqlCommand("select * from student-info", conn);//创建通用命令器对象comm,用于读取student中的数据表student-info;
conn.Open();//打开连接
SqlDataReader dr = comm.ExecuteReader();//通过实例化创建dr数据阅读器;
this.ListBox2.DataSource = dr;//设置控件listbox1的数据源
this.ListBox2.DataTextField = "stud_name";//设置控件listbox要显示的文本
this.ListBox2.DataBind();//通过databind方法将数据绑定到控件
conn.Close();
}
从以上两种不同的数据读取方式可以看出,DataAdapter用来读取数据时需要建立数据集来保存读取出来的 数据,而DataReader对数据进行检索时,采用的是单向数据流的形式读取数据,两者比较,由于DataAdapter不涉及数据结构的操作和处理, 所以在读取数据速度时,要比DataAdapter快。
 点击按钮效果图:

DataAdapter一般用于数据量比较小的数据库或其他形式的 数据源,DataReaderr用于数据量相对比较大的数据库,DataReaderr是顺序阅读,速度很快,据说要快30倍以上,但是DataReader读数据的时候是要占用连接的,而DataSet是不用的。