行政区划程序的设计(九)

来源:互联网 发布:读取usb接口状态数据 编辑:程序博客网 时间:2024/04/29 17:02

Author:水如烟

总目录:行政区划数据方案设计

 上一篇,行政区划程序的设计(八)

虽然前面分析了好多,提到了好些关键处,可真到写代码时,还是免不了会忽视过去。
刚才测试了昨晚的代码,这里出了问题:

    Private Sub UpdateDatabaseByDataSet(ByVal ds As DataSet)
        
For Each table As DataTable In ds.Tables
            UpdateDatabaseByDataTable(table)
        
Next
    
End Sub

应该是:

    Private Sub UpdateDatabaseByDataSet(ByVal ds As DataSet)
        
'确保按版本由旧至新顺序更新

        
Dim mDataVersionArray(ds.Tables.Count - 1As String
        
For i As Integer = 0 To ds.Tables.Count - 1
            mDataVersionArray(i) 
= ds.Tables(i).TableName
        
Next

        Array.Sort(mDataVersionArray)
        
'如果第一个版本大于最后一个版本,则倒置
        If mDataVersionArray(0> mDataVersionArray(mDataVersionArray.Length - 1Then
            Array.Reverse(mDataVersionArray)
        
End If

        
For i As Integer = 0 To mDataVersionArray.Length - 1
            UpdateDatabaseByDataTable(ds.Tables(mDataVersionArray(i)))
        
Next

    
End Sub

这一点,在考虑数据库的设计时就特别的强调过。昨晚写代码时就忘了。所以无论如何的有把握,最好还是将要点写在纸条上,不时的看一下好。

下面分析RegionalCodeCenter项目的要点。

程序说到这里,或许你认为是不是我将简单的问题复杂了,用得着建那么多的项目吗?可是到了RegionalCodeCenter这个项目,再分析下来,我会觉得项目还不够用。

再次重温各个项目的作用。
RegionalCodeLibary仅仅与数据库打交道。数据库夹带着它,无论到哪,都用得着。没有这个项目,只有数据库,无论是谁,都要走这个项目相似的路。它对外提供的结果,都是Framework的基础类。它没什么要求,很简单。它是满足这个方案需求的核心。核心的东西,就是需要简单。

RegionalCodeCommon项目。它是从全局全方位的角度来引领方案需求实现过程的思维。它是纵观全局的,也是横向联系的。但是它也是民主的,它仅仅是展现给编码者应注意些什么,如果你愿意,可以使用它提供的一些属性和方法,不愿意,你尽可绕开它。如果想少走弯路,快些上路,弄清楚并把握好它的意念,从而甘心接受它的“约束”,是值得的。

针对特定方案,你研究了,有体会了,也应该充实这个项目的内容,让它更具生气。

ReionalCodeCenter项目。它要联系上RegionalCodeLibary,并把RegionalCodeLibary提供的服务内容转成我们需要的特定内容,再转身,传给用户。
RegionalCodeLibary是方案的核心,而它呢,则是方案的中心,也是方案的关键,最纷繁复杂的了。
在这里,居中一刀切下来,就变成以后要说的Remoting(webservice我还没接触过)方式了。

如果你能体会“一刀切”,那么,后面的代码就好理解的了。

只能笼统说。下面边写代码边说好些。但要注意,写这个项目往往是先写RegionalCodeCommon项目的。

下一篇,行政区划程序的设计(十),RegionalCodeCommon项目的设计。