ADO.NET数据访问技术的一个突出的特点就是支持离线访问,而实现这种离线访问技术的核心就是DateSet对象,该对象通过将数据驻留在内存来实现离线访问.
DataSet对象由一组DataTable对象组成,这些对象DataRelation对象互相关联,这些Data Table对象又包含Rows(行)集合、Columns(列)集合,Rows集合是由多个DataRow对象组成,Columns集合是由多个DataColumns对象组成。
步骤
- 引入命名空间system.Data
- 创建DataSet对象
- 创建DataTable对象
- 将DataTable对象加入DataSet对象中
- 定义列,并像DataTable中增加已经定义好的列
- 插入行数据
- 进行相关操作
class Program { public static void outprint(DataSet ds) //输出方法 { foreach (DataTable outable in ds.Tables) { Console.WriteLine("表名"+outable.TableName); foreach (DataRow outdrow in outable.Rows) { foreach (DataColumn outcolumn in outable.Columns ) { Console.WriteLine(outdrow[outcolumn]+" "); Console.WriteLine(); } } } } static void Main(string[] args) { try { //定义数据集 DataSet myds = new DataSet("book"); //定义表 DataTable mydt = new DataTable("table001"); //数据表添加到数据集中 myds.Tables.Add(mydt); //定义列 相当于字段 行 相当于数据 有了字段才能在行上面添加数据,所以要先定义列 DataColumn mytcl1 = new DataColumn("name",Type.GetType("System.String")); //定义mycl1列=新列 列的名称和获取列的数据类型 DataColumn mytcl2 = new DataColumn("deparment",Type.GetType("System.String")); //列加入到数据表中 mydt.Columns.Add(mytcl1); mydt.Columns.Add(mytcl2); string[,] str = { { "张三", "开发部" }, { "赵四", "项目部" }, { "王五", "售后部" }, { "赵六", "技术部" } }; for (int i = 0; i < str.Length / 2; i++) //for循环添加数据 { DataRow myrow = mydt.NewRow(); //定义行 等于表格中的新行 我们先前定义了表和列 列加入表中, //table.newrow()返回一个具有相同架构的新行 不定义列直接newrow 里面有字段的也就是没架构 myrow[0] = str[i, 0]; myrow[1] = str[i, 1]; mydt.Rows.Add(myrow); //行加入表中 } myds.AcceptChanges(); //保存 outprint(myds); } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } Console.ReadKey(); } } }
自己理解 创建dataset数据集的时候 就跟创建database一样 首先呢 要创建数据库【dateset】 创建数据表【datatable】 把表加入到数据库中 ,之后呢要创建字段了 字段就是列 创建完列之后 要把列加入到表中 整个一个dataset数据集(数据库)的框架就弄好了。 定义一个2维数组,利用for 循环传到刚刚我们创建的框架中 往框架中传数据需要用到行(DataRow drw = dtb.NewRow();)把行加入到表中 Drw[0] 代表第一行 Drw[1] 代表第二行 . . . 之后输出dataset数据集 创建一个方法 public void outvalue(DataSet ds) { foreach (DataTable outdtb in ds.Tables) //首先检查数据集中的表 { Console.WriteLine(outdtb.TableName); //输出表名 foreach (DataRow outdrw in outdtb.Rows) //检查行数据 { foreach (DataColumn outdcl in outdtb.Columns) //检查列数据 { Console.Write(outdrw[outdcl]+" "); //输出列数据 } Console.WriteLine(); //输出一列后换行 } }