您的位置:首页 > 其它

演示DataRow类的使用

2006-12-19 23:41 141 查看
(摘录自《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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: