zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C# 之 数据集SQL Dataset

c#SQL数据 Dataset
2023-09-11 14:20:51 时间

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