使用DataReader的DataGridView






3.12/5 (18投票s)
如何在Win App中填充DataReader的DataGridView
引言
我经常被问到的一个问题是,如何使用 DataReader 填充 dataGridview。 如果你注意 DataReader 的行为,你会发现当你使用 DataReader 读取时,你是逐行读取的,所以你需要循环读取所有记录,如果你想显示所有记录或记录中的任何元素。 另一方面,dataGridview 需要一次性获取所有记录的数据。 因此,解决方案是创建一个中心存储,通过创建一个包含属性的类,并在读取每条记录的值时为每个属性设置值,并将创建的类的每个对象存储在 ArrayList 中。 这样,ArrayList 将代表你的存储。
Using the Code
步骤 1:创建一个包含属性的类
public class MyDetails
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
}
步骤 2:创建一个 ArrayList 来表示你的存储
ArrayList sequence = new ArrayList();
步骤 3:当你检索数据时,执行以下操作
while (reader.Read())
{
MyDetails m = new MyDetails();
m.Id = (int)reader[0];
m.Name = reader[1].ToString();
m.Age = (int)reader[2];
sequence.Add(m);
}
dataGridView1.DataSource = sequence;
最终代码
SqlConnection sqlCon = null;
try
{
sqlCon = new SqlConnection();
sqlCon.ConnectionString = "Your Connection String";
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlCon;
cmd.CommandText = "SELECT * FROM StudentInfo";
sqlCon.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MyDetails m = new MyDetails();
m.Id = (int)reader[0];
m.Name = reader[1].ToString();
m.Age = (int)reader[2];
sequence.Add(m);
}
dataGridView1.DataSource = sequence;
}
finally
{
sqlCon.Close();
}