(摘录自《C#函数实用手册》冶金工业出版社)
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable testDT = new DataTable("student"); // 创建一个DataTable对象
DataColumn testDC; //创建一个DataColumn对象
testDC = new DataColumn(); // 初始化DataColumn对象
testDC.DataType = Type.GetType("System.Int32"); // 设置该栏的数据类型
testDC.ColumnName = "ID"; // 设置栏名
testDT.Columns.Add(testDC); // 给DataTable添加栏
testDC = new DataColumn();
testDC.DataType = Type.GetType("System.Int32");
testDC.ColumnName = "sID";
testDT.Columns.Add(testDC);
testDC = new DataColumn();
testDC.DataType = Type.GetType("System.String");
testDC.ColumnName = "Name";
testDC.Unique = true;
testDT.Columns.Add(testDC);
Console.WriteLine("表名:{0}", testDT.TableName);
Console.WriteLine("表初始约束信息:/n------------------------------");
DoPrint(testDT);
Console.WriteLine("在ID列添另一个约束主键:");
testDT.Constraints.Add("idUniqueConstraint", testDT.Columns["ID"], true);
DoPrint(testDT);
Console.WriteLine("把sID列作为ID列的外键:");
testDT.Constraints.Add("ForeignKey",testDT.Columns["ID"],testDT.Columns["sID"]);
DoPrint(testDT);
try
{
Constraint c = testDT.Constraints[0];
Console.WriteLine("第一个约束能否被移除? {0}", testDT.Constraints.CanRemove(c));
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
Console.WriteLine("是否有名为ForeignKey的约束? {0}", testDT.Constraints.Contains("ForeignKye"));
Console.WriteLine("名为ForeignKey约束的索引: {0}", testDT.Constraints.IndexOf("ForeignKey"));
testDT.Constraints.Remove("Constraint1");
Console.WriteLine("移除名为Constoraint1的约束后:");
DoPrint(testDT);
Console.WriteLine("移除第2个约束后:");
testDT.Constraints.RemoveAt(1);
DoPrint(testDT);
Console.WriteLine("清除所有约束后:");
testDT.Constraints.Clear();
DoPrint(testDT);
Console.ReadLine();
}
private static void DoPrint(DataTable dt)
{
foreach (Constraint testC in dt.Constraints)
{
Console.WriteLine("约束信息:{0}", testC.ToString());
Console.WriteLine("约束类型:{0}",testC.GetType().ToString());
}
Console.WriteLine("------------------------------/n");
}
}
}
**********************************************************
执行结果如下:
表名:student
表初始约束信息:
------------------------------
约束信息:Constraint1
约束类型:System.Data.UniqueConstraint
------------------------------
在ID列添另一个约束主键:
约束信息:Constraint1
约束类型:System.Data.UniqueConstraint
约束信息:idUniqueConstraint
约束类型:System.Data.UniqueConstraint
------------------------------
把sID列作为ID列的外键:
约束信息:Constraint1
约束类型:System.Data.UniqueConstraint
约束信息:idUniqueConstraint
约束类型:System.Data.UniqueConstraint
约束信息:ForeignKey
约束类型:System.Data.ForeignKeyConstraint
------------------------------
第一个约束能否被移除? True
是否有名为ForeignKey的约束? False
名为ForeignKey约束的索引: 2
移除名为Constoraint1的约束后:
约束信息:idUniqueConstraint
约束类型:System.Data.UniqueConstraint
约束信息:ForeignKey
约束类型:System.Data.ForeignKeyConstraint
------------------------------
移除第2个约束后:
约束信息:idUniqueConstraint
约束类型:System.Data.UniqueConstraint
------------------------------
清除所有约束后:
------------------------------