(摘录自《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);
testDR = testDT.NewRow();
testDR["ID"] = 3;
testDR["Name"] = "Tom ";
testDR["School"] = "SCUT";
testDT.Rows.Add(testDR);
Console.WriteLine("当前表的信息:");
DoPrint(testDT);
Console.WriteLine("添加一行信息:");
testDR = testDT.NewRow();
testDR["ID"] = 4;
testDR["Name"] = "Cat ";
testDR["School"] = "ZSU";
testDT.Rows.Add(testDR);
Console.WriteLine("添加新行的状态:{0}", testDR.RowState);
DoPrint(testDT);
Console.WriteLine("对新添加的行执行AcceptChanges操作...");
testDR.AcceptChanges();
Console.WriteLine("执行AcceptChanges操作该行的状态:{0}",testDR.RowState);
DoPrint(testDT);
Console.WriteLine("再添加一行信息:");
testDR = testDT.NewRow();
testDR["ID"] = 5;
testDR["Name"] = "Jim ";
testDR["School"] = "ZSU ";
testDT.Rows.Add(testDR);
Console.WriteLine("添加行的状态:{0}", testDR.RowState);
DoPrint(testDT);
Console.WriteLine("对新添加的行执行RejectChanges操作...");
testDR.RejectChanges();
Console.WriteLine("执行RejectChanges操作该行的状态:{0}", testDR.RowState);
DoPrint(testDT);
Console.WriteLine("开始编辑...");
foreach (DataRow dr in testDT.Rows)
{
dr.BeginEdit();
dr[0] = (int)dr[0] + 10;
dr.EndEdit();
}
Console.WriteLine("编辑结束!");
DoPrint(testDT);
Console.WriteLine("设置错误信息:");
string errStr = "这是一个错误的ID号!";
testDR = testDT.Rows[0];
testDR.SetColumnError(testDT.Columns[0], errStr);
foreach (DataRow dre in testDT.Rows)
{
DataColumn[] dcA;
if (dre.HasErrors) // 判断某行是否有错误
{
dcA = dre.GetColumnsInError(); // 获取包含错误的列的数组
for (int i = 0; i < dcA.Length; i++)
{
Console.WriteLine("有错误信息的列名:" + dcA[i].ColumnName);
}
Console.WriteLine("消除所有该行的错误.");
dre.ClearErrors(); // 使用ClearErrors方法清除该行的错误
}
}
Console.WriteLine();
testDR = testDT.Rows[3];
testDR.Delete(); // 使用Dete方法删除DatRow对象
testDR.AcceptChanges();
Console.WriteLine("删除最后一行!");
DoPrint(testDT);
DataTable testDTC = new DataTable("class");
testDC = new DataColumn();
testDC.DataType = Type.GetType("System.Int32");
testDC.ColumnName = "CID";
testDTC.Columns.Add(testDC);
testDC = new DataColumn();
testDC.DataType = Type.GetType("System.String");
testDC.ColumnName = "Grade";
testDTC.Columns.Add(testDC);
string[] pstr = { "ID" };
string[] cstr = { "CID" };
DataRelation dR = new DataRelation("eq", "student", "class", pstr, cstr, true);
foreach (DataRelation drn in testDT.ChildRelations)
{
foreach (DataRow dr in testDT.Rows)
{
DataRow[] drA = dr.GetChildRows(drn);
for (int i = 0; i < drA.Length; i++)
{
foreach (DataColumn dc in testDT.Columns)
{
Console.WriteLine(drA[i][dc]);
}
}
}
}
testDR = testDT.Rows[0]; Console.WriteLine("第一列是否有空值?" + testDR.IsNull("ID"));
Console.ReadLine();
}
private static void DoPrint(DataTable tempDT)
{
Console.WriteLine(" {0}表数据:", tempDT.TableName);
foreach (DataColumn dc in tempDT.Columns)
Console.Write(dc.ColumnName + " ");
Console.WriteLine();
foreach (DataRow dr in tempDT.Rows)
{
foreach (DataColumn dc in tempDT.Columns)
{
Console.Write(dr[dc] + " ");
}
Console.WriteLine();
}
Console.WriteLine("------------------------------/n");
}
}
}
*****************************************************************
执行结果如下:
当前表的信息:
student: {0}表数据:
ID Name School
1 Rose SCUT
2 Coke SCNU
3 Tom SCUT
------------------------------
添加一行信息:
添加新行的状态:Added
student: {0}表数据:
ID Name School
1 Rose SCUT
2 Coke SCNU
3 Tom SCUT
4 Cat ZSU
------------------------------
对新添加的行执行AcceptChanges操作...
执行AcceptChanges操作该行的状态:Unchanged
student: {0}表数据:
ID Name School
1 Rose SCUT
2 Coke SCNU
3 Tom SCUT
4 Cat ZSU
------------------------------
再添加一行信息:
添加行的状态:Added
student: {0}表数据:
ID Name School
1 Rose SCUT
2 Coke SCNU
3 Tom SCUT
4 Cat ZSU
5 Jim ZSU
------------------------------
对新添加的行执行RejectChanges操作...
执行RejectChanges操作该行的状态:Detached
student: {0}表数据:
ID Name School
1 Rose SCUT
2 Coke SCNU
3 Tom SCUT
4 Cat ZSU
------------------------------
开始编辑...
编辑结束!
student: {0}表数据:
ID Name School
11 Rose SCUT
12 Coke SCNU
13 Tom SCUT
14 Cat ZSU
------------------------------
设置错误信息:
有错误信息的列名:ID
消除所有该行的错误.
删除最后一行!
student: {0}表数据:
ID Name School
11 Rose SCUT
12 Coke SCNU
13 Tom SCUT
------------------------------
第一列是否有空值?False