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

作者:Czhenya 时间:2023-02-24 08:23:07 

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();
         }
       }
     }
   }
 }
}

来源:https://blog.csdn.net/Czhenya/article/details/77718386

标签:c#,sql,dataset
0
投稿

猜你喜欢

  • idea导入工程时不能导入maven项目不能加入tomcatServer的原因

    2023-06-13 05:35:11
  • JAXB简介_动力节点Java学院整理

    2021-09-15 00:09:32
  • 一篇文章带你了解Java Stream流

    2022-11-05 10:26:18
  • Android防止点击过快造成多次响应事件的解决方法

    2023-05-24 16:26:09
  • Android开发input问题解决分析

    2021-11-10 08:58:46
  • android从资源文件中读取文件流并显示的方法

    2022-05-29 14:11:56
  • springboot 集成redission 以及分布式锁的使用详解

    2023-06-20 06:48:43
  • Unity实现菜品识别的示例代码

    2023-06-11 22:16:10
  • Java中的clone()和Cloneable接口实例

    2022-09-27 15:31:05
  • HTTP基本认证(Basic Authentication)的JAVA实例代码

    2022-06-08 13:03:32
  • 利用Java生成带有文字的二维码

    2022-05-21 15:01:38
  • Spring Cloud Config实现分布式配置中心

    2022-04-25 16:28:07
  • Android Studio 3.6 layout文件text模式切换问题

    2022-10-06 11:28:32
  • Java实现堆排序(Heapsort)实例代码

    2023-06-15 02:02:11
  • Android VelocityTracker使用案例详解

    2023-08-29 13:32:03
  • springcloud Zuul动态路由的实现

    2021-10-07 06:15:40
  • java使用Socket实现SMTP协议发送邮件

    2022-06-08 19:25:50
  • 详解Java如何改变字符串中的字符

    2022-06-13 14:29:48
  • Springboot中Aspect切面的实现方式(以记录日志为例)

    2022-09-15 20:58:25
  • 一篇文章带你入门Springboot沙箱环境支付宝支付(附源码)

    2021-06-26 23:21:16
  • asp之家 软件编程 m.aspxhome.com