当前位置: 移动技术网 > IT编程>开发语言>c# > C#使用SQL Dataset数据集代码实例

C#使用SQL Dataset数据集代码实例

2019年07月18日  | 移动技术网IT编程  | 我要评论

ado.net数据访问技术的一个突出特点就是支持离线访问,而实现这种离线访问的技术核心急速dataset对象,该对象通过数据驻留在内存来实现离线访问。

dataset对象由一组datatable对象组成,这些对象与datarelation对象又包含row(行),集合,columns(列)集合,rows集合是有多个datarow对象组成,columns集合是由多个datacolumns对象组成。

步骤:

1,引入命名空间system.data;

2,创建dataset对象

3,创建datatable对象

4,将datatable对象加入dataset 对象中

5,定义列,并向datatableh中增加已经定义好的列

6,插入行数据

7,进行相关的操作

代码演示:

namespace datasetdemo
{
  class program
  {
    static void main(string[] args)
    {
      //创建dataset对象
      dataset myds = new dataset("mycsharp");
      datatable mydt = new datatable("mytable01");
      myds.tables.add(mydt);  //添加
      //声明三个列
      datacolumn mydcol1 = new datacolumn("id",type.gettype("system.int32"));
      datacolumn mydcol2 = new datacolumn("name", type.gettype("system.string"));
      datacolumn mydcol3 = new datacolumn("department", type.gettype("system.string"));
      //添加定义好的列
      mydt.columns.add(mydcol1);
      mydt.columns.add(mydcol2);
      mydt.columns.add(mydcol3);
      //输入数据
      string[,] mystr= { { "张三","开发部" }, { "李四","技术部" }, { "王五","网络部" }, { "赵六","人事部" } };
      for (int i=0; i< mystr.length/2;i++)
      {
        datarow myrow = mydt.newrow();  //增加新的行
        myrow[0] = i;
        myrow["name"] = mystr[i, 0];
        myrow[2] = mystr[i, 1];
        mydt.rows.add(myrow);
      }
      myds.acceptchanges();  //保存
    }
  }
}

dataset 常用简单方法

  • clear 移除表中所有含来清除任何数据的dataset;
  • clone 复制该dataset的结构但不复制数据
  • copy 复制dataset结构和数据
  • dispose 释放dataset对象
  • equals 确定两个dataset对象是否 相同
  • merge 将指定的dataset datatable 或datarow 对象的数组并合并到当前地dataset或datatable中
  • reset 将dataset重置为初始状态

小实例: 合并dataset内容,复制dataset内容

基于上面的代码继续写:

namespace datasetdemo
{
  class program
  {
    static void main(string[] args)
    {
      //创建dataset对象
      dataset myds = new dataset("mycsharp");
      datatable mydt = new datatable("mytable01");
      myds.tables.add(mydt);  //添加
      //声明三个列
      datacolumn mydcol1 = new datacolumn("id",type.gettype("system.int32"));
      datacolumn mydcol2 = new datacolumn("name", type.gettype("system.string"));
      datacolumn mydcol3 = new datacolumn("department", type.gettype("system.string"));
      //添加定义好的列
      mydt.columns.add(mydcol1);
      mydt.columns.add(mydcol2);
      mydt.columns.add(mydcol3);
      //输入数据
      string[,] mystr= { { "张三","开发部" }, { "李四","技术部" }, { "王五","网络部" }, { "赵六","人事部" } };
      for (int i=0; i< mystr.length/2;i++)
      {
        datarow myrow = mydt.newrow();  //增加新的行
        myrow[0] = i+1;   
        myrow["name"] = mystr[i, 0];  //使用字符串
        myrow[2] = mystr[i, 1];
        mydt.rows.add(myrow);
      }
      myds.acceptchanges();  //保存
      console.writeline("更改前的数据");
      outvalues(myds);  //调用遍历方法
      //创建第二个表
      datatable mydt02 = mydt.clone();
      datarow mydr02 = mydt02.newrow();
      mydt02.rows.add(new object[] { 5,"czhenya","开发部"});
      mydt02.rows.add(new object[] { 5, "陈九", "开发部" });
      //------合并两个表------
      myds.merge(mydt02);  //将其架构合并到myds中
      console.writeline("-----合并后的表-----");
      outvalues(myds);
      //------复制--------
      dataset myds01 = myds.copy();
      dataset myds02 = myds.clone();
      console.writeline("copy的结果");
      outvalues(myds01);  //完全复制
      console.writeline("clone的结果");
      outvalues(myds02);  //克隆出框架,不复制数据
      console.read();  
    }
    /// <summary>
    /// 实现遍历dataset
    /// </summary>
    /// <param name="ds">dataset名称</param>
    public static void outvalues(dataset ds)  
    {
      foreach (datatable outtable in ds.tables)
      {
        console.writeline("表名称:"+ outtable.tablename);
        foreach (datarow outdr in outtable.rows)
        {
          foreach (datacolumn ourdcol in outtable.columns)
          {
            console.write(outdr[ourdcol] + "\t");
            console.writeline();
          }
        }
      }
    }
  }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。如果你想了解更多相关内容请查看下面相关链接

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网