Table是怎样炼成的:Table

简介:
描述一个数据表

1   /// <summary>
2 /// 描述一个数据表
3 /// </summary>

4   public   class  Table
5   {
6
7 protected Table(string name, ColumnCollection cols)
8 {
9 TableName = name;
10 Columns = cols;
11 Rows = new RowCollection();
12 }

13
14 /// <summary>
15 /// 获取或设置表的列架构
16 /// </summary>

17 protected readonly ColumnCollection Columns;
18 /// <summary>
19 /// 获取或设置表的数据行
20 /// </summary>

21 protected RowCollection Rows;
22 /// <summary>
23 /// 获取或设置表的名称
24 /// </summary>

25 protected readonly string TableName;
26
27 /// <summary>
28 /// 将该行数据状态改为RowState.Unchanged
29 /// </summary>

30 protected void AcceptChanges()
31 {
32 for (int i = 0; i <= Rows.Count - 1; i++)
33 {
34 Rows[i].AcceptChanges();
35 }

36 }

37
38 /// <summary>
39 /// 移除所有数据行
40 /// </summary>

41 protected void Clear()
42 {
43 this.Rows.Clear();
44 }

45
46 /// <summary>
47 /// 返回状态匹配的数据行,并以新数据表的形式体现
48 /// </summary>
49 /// <param name="rowState"></param>
50 /// <returns></returns>

51 protected Table GetChanges(RowState rowState)
52 {
53 Table tmpTable = new Table(rowState.ToString(), this.Columns);
54 foreach (Row row in Rows)
55 {
56 if (row.RowState == rowState)
57 {
58 tmpTable.Rows.Add(row);
59 }

60 }

61 return tmpTable;
62
63 }

64
65 /// <summary>
66 /// 依据现有的数据表的架构,生成新的数据行
67 /// </summary>
68 /// <returns></returns>

69 protected Row NewRow()
70 {
71 return new Row(Columns, this.TableName);
72 }

73
74 /// <summary>
75 /// 按关键字(数据行的第一列)匹配,并返回符合的数据行
76 /// </summary>
77 /// <param name="filterKey"></param>
78 /// <returns></returns>

79 protected Row[] Select(string filterKey)
80 {
81 System.Collections.ArrayList tmpRows = new System.Collections.ArrayList();
82 foreach (Row row in Rows)
83 {
84 if (row[0].ToString() == filterKey)
85 {
86 tmpRows.Add(row);
87 }

88 }

89 return (Row[])tmpRows.ToArray(typeof(Row));
90 }

91
92 /// <summary>
93 /// 打印Table的数据
94 /// </summary>

95 public virtual void Print()
96 {
97 System.Text.StringBuilder sb = new StringBuilder();
98
99 foreach (Column col in this.Columns)
100 {
101 sb.AppendFormat("{0}/t", col.ColumnName);
102 }

103 sb.AppendLine();
104 System.Console.WriteLine(sb.ToString());
105 foreach (Row row in this.Rows)
106 {
107 foreach (object obj in row.ItemArray)
108 {
109 System.Console.Write("{0}/t", obj);
110 }

111 System.Console.WriteLine();
112 }

113 }

114 }

 

好,到此Table所涉及的5个类都定义实现完毕了。
我们来回顾一下,Table中什么是最基础的,什么是最重要的?
按我们一般来看,表中最重要基础的实行,最重要的是数据。其实表最基础是的架构,架构就是列的定义,而行只不过是列的数据体现形式。
所以Table在构造的时候,必须先定义列的集合,而Row的构造函数是protected internal的,意义是不能在外面被构造,必须通过Table来依据列的定义来构造。

下篇,我们将看到我们对Table的继承,发挥更多OO体现。

 


本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806271

相关文章
|
2月前
|
前端开发
`<table>`
【10月更文挑战第17天】
42 1
|
JavaScript 前端开发 数据可视化
vxe-table
vxe-table
755 0
vxe-table
|
自然语言处理 安全 数据库
Miniob drop table 实现解析 | 学习笔记
快速学习 Miniob drop table 实现解析
Miniob drop table 实现解析 | 学习笔记
瞬表——Ephemeron Table
瞬表——Ephemeron Table
168 0
Stones on the Table
Stones on the Table
134 0
Stones on the Table
|
SQL 存储 关系型数据库
面试突击58:truncate、delete和drop的6大区别
面试突击58:truncate、delete和drop的6大区别
308 0
|
SQL 存储 关系型数据库
面试突击55:delete、drop、truncate有什么区别?
面试突击55:delete、drop、truncate有什么区别?
261 0
|
SQL 关系型数据库 MySQL
|
SQL Oracle 关系型数据库