演示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
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
相关文章推荐
- 演示DataRow类的使用
- 同台服务器使用缓存APC效率高于Memcached的演示代码
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数
- Java路径问题最终解决方案使用演示
- 基于 Anaconda3 5.0.0 JupyterLab 0.27.0 使用 ftplib 演示 IPv4 和 IPv6 上传文件和下载文件
- 使用QuickPart时应用自定义属性和Web Part Connection功能的演示视频
- extjs使用gridPanel演示基于asp.net使用json传送数据
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
- 演示DataTable类的使用
- 第七期 使用 Keras 演示神经网络 《显卡就是开发板》
- 使用Log4j为项目配置日志输出应用详细总结及示例演示.
- 演示ForeignKeyConstraint类的使用
- dorado 的学习位置、控件使用方法查找、示例演示地址
- 实例演示如何使用WordPress自定义字段
- Windows 演示设置如何使用命令行控制
- linux 下查找、搜索文件筛选使用 grep 实例演示 带截图
- jQuery boxy弹出层插件中文演示及使用讲解
- Java Swing使用系统桌面的ClearType字体演示
- 初探django-演示charade使用virtualenv来配置项目在centos7下部署