演示DataTable类的使用

来源:互联网 发布:开源软件许可协议 编辑:程序博客网 时间:2024/05/20 04:11

(摘录自《C#函数实用手册》冶金工业出版社)

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable testDT = new DataTable("student");
            DataColumn testDC;
            testDC = new DataColumn();
            testDC.DataType = Type.GetType("System.Int32");
            testDC.ColumnName = "ID";
            testDT.Columns.Add(testDC);
 
            testDC = new DataColumn();
            testDC.DataType = Type.GetType("System.String");
            testDC.ColumnName = "Name";
            testDT.Columns.Add(testDC);
 
            testDC = new DataColumn();
            testDC.DataType = Type.GetType("System.String");
            testDC.ColumnName = "School";
            testDT.Columns.Add(testDC);
 
            DataRow testDR = testDT.NewRow();
            testDR["ID"] = 1;
            testDR["Name"] = "Rose";
            testDR["School"] = "SCUT";
            testDT.Rows.Add(testDR);
 
            testDR = testDT.NewRow();
            testDR["ID"] = 2;
            testDR["Name"] = "Coke";
            testDR["School"] = "SCNU";
            testDT.Rows.Add(testDR);
 
            testDT.AcceptChanges();
            Console.WriteLine("原始表的数据:");
            DoPrint(testDT);
 
            Console.WriteLine("添加数据:");
            testDR = testDT.NewRow();
            testDR[0] = 3;
            testDR[1] = "Mike";
            testDR[2] = "SCUT";
            testDT.Rows.Add(testDR);
            DoPrint(testDT);
 
            Console.WriteLine("不要该添加的数据:");
            testDT.RejectChanges();
            DoPrint(testDT);
 
            Console.WriteLine("添加数据:");
            testDR = testDT.NewRow();
            testDR[0] = 4;
            testDR[1] = "Clin";
            testDR[2] = "SCNU";
            testDT.BeginLoadData();    // 使用BeginLoadData方法在加载数据时关闭通知、索引维护和约束
            testDT.Rows.Add(testDR);
            testDT.EndLoadData();    // 使用BeginLoadData方法在加载数据时打开通知、索引维护和约束
            DoPrint(testDT);
 
            DataTable testDTA = testDT.GetChanges();
            Console.WriteLine("添加的数据:");
            DoPrint(testDTA);
 
            DataRow[] testDRA;
            testDRA = testDT.Select();    // 使用Select方法获取DataRow对象的数组
            Console.WriteLine("学生的名字:");
            for (int i = 0; i < testDRA.Length; i++)
            {
                Console.WriteLine(testDRA[i]["Name"]);
            }
 
            Console.WriteLine("执行Reset操作!");
            testDT.Reset();
            DoPrint(testDT);
            Console.ReadLine();
        }
 
        private static void DoPrint(DataTable dt)
        {
            Console.WriteLine("  " + dt.TableName + "表");
            foreach (DataColumn dc in dt.Columns)
            {
                Console.Write(" " + dc.ColumnName + " ");
            }
            Console.WriteLine();
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    Console.Write("  " + dr[dc]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("------------------------------/n");
        }
    }
}

 
********************************************

执行结果如下:

原始表的数据:
  student表
 ID  Name  School
  1  Rose  SCUT
  2  Coke  SCNU
------------------------------

添加数据:
  student表
 ID  Name  School
  1  Rose  SCUT
  2  Coke  SCNU
  3  Mike  SCUT
------------------------------

不要该添加的数据:
  student表
 ID  Name  School
  1  Rose  SCUT
  2  Coke  SCNU
------------------------------

添加数据:
  student表
 ID  Name  School
  1  Rose  SCUT
  2  Coke  SCNU
  4  Clin  SCNU
------------------------------

添加的数据:
  student表
 ID  Name  School
  4  Clin  SCNU
------------------------------

学生的名字:
Rose
Coke
Clin
执行Reset操作!
  student表
------------------------------