数据集问题
一、手动创建一个数据集
private void btnCreateSet_Click(object sender, EventArgs e)
{
//1.创建一个数据集
DataSet ds = new DataSet();
//2.创建一张表
DataTable dt = new DataTable("temp");
//3.创建一张表,需要先创建出表的架构--列集合,所以得先创建出一列,再创建出其它列
DataColumn c1 = new DataColumn("Id", typeof(int));
c1.AutoIncrement = true;
c1.AutoIncrementSeed = 1;
c1.AutoIncrementStep = 1;
//4.将创建好的列添加到表的列集合
dt.Columns.Add(c1);
//再创建一列
DataColumn c2 = new DataColumn("Name",typeof(string));
c2.AllowDBNull = false;
c2.Unique = true;
dt.Columns.Add(c2);
//5.表的架构做完,应该为表添加数据行 ,数据行为什么不能new,因为行的数据添加必须依赖表的架构
DataRow row = dt.NewRow();//创建一个与当前表相同架构的新行;
//为行添加值
//row["Id"] = 标识列不能赋值;
row[1] = "aa";
//6.将创建的行添加到行集合
dt.Rows.Add(row);
DataRow row2 = dt.NewRow();
row2["name"] = "bb";
dt.Rows.Add(row2);
//7将生成的表添加到数据集中
ds.Tables.Add(dt);
//指定数据源,可以直接指定生成的表
this.dataGridView1.DataSource = dt;
//也可以指定数据集中的表
this.dataGridView1.DataSource = ds.Tables[0];
}
二、使用数据读取器读取到数据集
private void btnGet_Click(object sender, EventArgs e)
{
//1.创建数据集
DataSet ds = new DataSet();
//2.创建数据表
DataTable dt = new DataTable("Grade");
//3.创建表的架构--列
DataColumn c1 = new DataColumn("ClassId",typeof(int));
DataColumn c2 = new DataColumn("ClassName",typeof(string));
//4.将创建的列添加到表的架构
dt.Columns.Add(c1);
dt.Columns.Add(c2);
//5.使用数据读取器读取数据到数据行
using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=MySchoolMoreData;Integrated Security=True"))
{
conn.Open();
string sql = "select classid,classname from grade";
SqlCommand command = new SqlCommand(sql,conn);
SqlDataReader reader = command.ExecuteReader();
while(reader.Read())
{
//每一次读取一行,就生成一个表的新行,添加到数据表中
DataRow row = dt.NewRow();
row[0] = reader[0];
row[1] = reader[1];
//将生成的行添加到表的行集合中
dt.Rows.Add(row);
}
}
//将生成的表添加到数据集中
ds.Tables.Add(dt);
//指定数据源
this.dgvGrade.DataSource=ds.Tables["Grade"];
}
三、使用数据适配器读取数据
void LoadData()
{
//创建一个用来存储使用适配器运送回来的数据的表
dt = new DataTable();
DataSet ds = new DataSet();
//ds.Tables.Add(dt);
//需要获取的数据
string sql = "select * from grade;select * from student";
string connStr = "Data Source=.;Initial Catalog=MySchoolMoreData;Integrated Security=True";
//创建数据适配器对象,这个对象就相当于现实生活中的 车,它可以帮助你运送数据到客户端,当然也能运送数据从客户端返回到服务器
da = new SqlDataAdapter(sql, connStr);
//适配器就会根据用户的需要从服务器中获取相应的数据,返回到用户指定的数据表或者数据集中
da.Fill(ds);
//指定数据源
this.dgvStudents.DataSource = ds.Tables[1];
}