数据集问题

一、手动创建一个数据集

 

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];
        }

原文地址:https://www.cnblogs.com/pengJk/p/6347275.html