C#使用SQL Dataset数据集代码实例
作者:Czhenya 发布时间:2023-02-24 08:23:07
标签:c#,sql,dataset
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
0
投稿
猜你喜欢
- package TestList;import java.util.ArrayList;import java.util.Iterator;
- 熬夜写完,尚有不足,但仍在努力学习与总结中,而您的点赞与关注,是对我最大的鼓励!在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目
- 问题背景通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们
- 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的
- 场景:按职能,鉴权系统需要划分 网关(spring gateway) + 鉴权(auth-server)。本文通过实践搭建鉴权系统。spri
- maven没有打包xml文件的问题最近使用maven带管理项目,采用SSM的技术栈,在配置好一些配置文件,打包部署到tomcat上,出现没有
- 一.对象在JVM的内存结构JAVA内存管理由JVM来管理。1)堆,所有new出来的对象(包括成员变量)2)栈,所有局部变量(包括方法的参数)
- 前言一般情况下,当我们使用 SpringDataElasticsearch 去操作 ES 时,索引名
- 本文实例为大家分享了java + dom4j.jar提取xml文档内容的具体代码,供大家参考,具体内容如下资源下载页:点击下载本例程主要借助
- object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和
- 概述线程池的好处和使用本篇文章就不赘叙了,不了解的可以参考下面两篇文章:一文全貌了解线程池的正确使用姿势学习线程池原理从手写一个线程池开始那
- 一、任务和执行策略之间的隐性耦合Executor可以将任务的提交和任务的执行策略解耦只有任务是同类型的且执行时间差别不大,才能发挥最大性能,
- LeetCode54. 螺旋矩阵 java实现题目难度 中给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,
- 项目背景我们开发过程中会碰到这样一类问题,就是数据层或三方接口返回的Bean对象需要转换重新装换一下我们需要的对象。我们通常的做法就是通过g
- 本文为大家分享了java画出五子棋游戏棋盘的方法,供大家参考,具体内容如下棋盘模块:画五子棋棋盘:19条横线、19条竖线步骤一:显示棋盘我有
- 写在前面之前想尝试把JWT和Shiro结合到一起,但是在网上查了些博客,也没太有看懂,所以就自己重新研究了一下Shiro的工作机制,然后自己
- 泛型是Java中一个非常重要的内容,对于Java进阶学习是必须要掌握的知识点之所以说这个知识点重要,如果你有过阅读过一些开源框架的代码,那你
- 北京时间 2018 年 3 月 1 日早上,如约发布的 Spring Boot 2.0 在同步至 Maven 仓库时出现问题,导致在 Git
- 只需要调用该类的一个方法createNewFile(),但是在实际操作中需要注意一些事项,如判断文件是否存在,以及如何向新建文件中写入数据等
- import java.io.*;import java.text.SimpleDateFormat;import java.util.*;