数据集DataSet

时间:2023-03-10 06:43:54
数据集DataSet

ADO.NET数据访问技术的一个突出的特点就是支持离线访问,而实现这种离线访问技术的核心就是DateSet对象,该对象通过将数据驻留在内存来实现离线访问.

DataSet对象由一组DataTable对象组成,这些对象DataRelation对象互相关联,这些Data Table对象又包含Rows(行)集合、Columns(列)集合,Rows集合是由多个DataRow对象组成,Columns集合是由多个DataColumns对象组成。

步骤

  1. 引入命名空间system.Data
  2. 创建DataSet对象
  3. 创建DataTable对象
  4. 将DataTable对象加入DataSet对象中
  5. 定义列,并像DataTable中增加已经定义好的列
  6. 插入行数据
  7. 进行相关操作
    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]+"\t");
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[] 代表第一行
Drw[] 代表第二行
.
.
.
之后输出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]+"\t"); //输出列数据 }
Console.WriteLine(); //输出一列后换行
} }