携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情 >>
Dataset是什么?
Dataset是临时保存在内存中的数据库,包含n张DataTable相当于里面的表。DataTable包含了行(Row)和列(Column)
演示
创建一个winform窗体应用,添加几个DataGridView控件,如下图所示
- 当窗体初始化时创建dataset及datatable
DataSet ds = new DataSet();
//新增加一个表(不命名)
DataTable dt = new DataTable();
ds.Tables.Add(dt);
//新增加一个表(命名)
DataTable dt2 = new DataTable("student");
ds.Tables.Add(dt2);
dgvStudent.DataSource = ds.Tables["student"];
DataTable有两个创建方式,此代码都展示了,第一个不命名的话可以使用索引来获取到表。第二个使用了命名就可以直接使用表名获取到。
- 下一步我们将定义表结构
//定义表结构
DataColumn dc = new DataColumn();
dc.ColumnName = "Sid";
dc.DataType = System.Type.GetType("System.Int32");
dt.Columns.Add(dc);
dt.Columns.Add(new DataColumn("Sname", Type.GetType("System.String")));
表结构需要定义列名称及列的类型。同样也有两个方式均展示出来了
- 下一步我们需要去添加数据,此处可以去数据库拿,此次就直接手动添加了,后续会将从数据库拿数据的方法补充在这个文章下面。
//插入数据
DataRow dr = dt.NewRow();
dr[0] = 9001;
dr[1] = "张三";
dt.Rows.Add(dr);
dt.Rows.Add(new Object[] {90000,"王五"});
- 下一步我们需要绑定数据,因为我们只是定义了数据并没有将数据绑定在控件上,只有绑定后才会在控件上显示出来。
//绑定数据
dgvStudent.DataSource = null;
dgvStudent.DataSource = ds.Tables[0];
如果之前使用的是表名定义则也可以使用表名去绑定数据。
最终效果
最终我们就可以看到数据已经在上面显示了。在真实代码中我们还可以将创建表这些方法封装一下,方便调用及方便代码的阅读。
DataSet常用方法 :
Clear()清除所有数据的DataTable。
Clone() 克隆DataTable 的结构,包括所有DataTable 架构和约束。
EndInit()结束在窗体上使用或由另一个组件使用的DataTable 的初始化。初始化发生在运行时。
ImportRow(DataRow row) 将DataRow 复制到DataTable 中,保留任何属性设置以及初始值和当前值。
Merge(DataTable table) 将指定的DataTable 与当前的DataTable 合并。
NewRow() 创建与该表具有相同架构的新DataRow。
AcceptChanges() 提交自上次调用AcceptChanges() 以来对该表进行的所有更改。
BeginInit()开始初始化在窗体上使用或由另一个组件使用的DataTable。初始化发生在运行时。