`
iwebcode
  • 浏览: 1997166 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

基于ArcGIS10.0和Oracle10g的空间数据管理平台四(C#开发)-通用数据管理模块

 
阅读更多

上一篇文章把整个系统的主界面实现了,接下来就是实现主界面上提供的各个功能模块。首先介绍的是通用数据管理模块,为什么称为通用数据呢?因为这些数据和我们平时使用关系型数据库管理的数据是类似的,这里称为通用数据主要是为了和空间数据做区别。

该模块采用统一的界面来管理所有属性数据表,可以同时做添加、删除和修改,而且对于每一个表都是通用的操作。用户选择修改的表以后就建立一个数据集和这个表关联,再将这个数据集绑定到数据显示控件上,同时将数据集绑定到数据适配器上,当用户对这个表的编辑操作完成以后并点击保存按钮就会将所有的更新操作与数据库同步,这些功能都是调用数据适配器的接口完成。在与数据库同步的时候会先查看是否有与之相关联的表也需要同步更新,如果有就先更新关联的表。为了保证数据库中数据的一致性和完整性,就必须保证所有更新操作都能成功的完成或者都不完成,所以所有更新操作都在一个事务中进行,如果更新过程中遇到异常就回滚到最初状态。整个过程的流程图如下:

第一篇文章介绍这个功能的时候,我贴出了这个模块运行的界面,从界面可以看出主要用到了两个控件,左边是一个树形控件用于按类别显示所有的属性表的名称,通过鼠标就可以选择一个需要查看、修改的表,右边是一个绑定了数据集的表数据显示控件,在这个控件中可以删除、添加和修改表的内容。除了这两个主要控件以外,就是一些用于显示文本提示的label控件和一些按钮控件,按钮主要用于控制用户具体的某种操作,后面会详细介绍每一个按钮功能的实现。

首先定义了一些类的成员变量,每一个成员变量的作用如下代码和注释所示:

接着构造函数初始化一些变量:

在对话框或form的Load函数中初始化一些其他变量:

上面代码首先初始化Oracle的链接对象,然后为树形控件添加一个根节点,添加具体的表分类目录和具体的表名称节点是在具体展开某一个节点的时候完成,这样启动这个功能界面的时候不会让用户等待太久,这个就是延迟初始化或加载。当然这种方式也有一个不好的地方,就是每次展开一个节点都会去重新初始化,这样会降低一些用户的体验,而且程序执行很多不必要的重复工作。不过这个还是有解决方案的,就是首先判断展开节点下面的子节点是否已经加载,如果已经加载就直接展开就可以了,不用再去重新新添加和初始化节点了。下面来具体解析怎样实现数据的修改操作。

说明:所有的操作都要通过保存按钮功能才是真正的同步到数据库,可以同时做添加、删除和修改操作以后一次性同步到数据库,而且对于所有表都是同样的操作,不过同时只能编辑一个表,如果编辑一个表以后没有点击保存按钮保存到数据库,那么所有的操作将会并取消。

1.删除操作,通过用户点击删除按钮触发,具体代码实现如下:

2.添加操作


3.编辑或更新操作(对于数据库的update)


4.保存操作,真正就改变的数据同步到数据库中去,重要功能实现:

这个函数功能相对复杂,因为涉及到级联更新操作,不是使用的触发器功能,因为不能使用触发器,他们的关联情况是根据ID字段部分内容进行关联的,可能是前几位不等。所以实现这个功能就相对复杂,我采用的方式是对这些关联关系我通过一张数据表来维护,通过这张数据表就很轻松查出有关联关系的表的所有内容,根据这些内容就可以做到级联更新了,不过级联更新都是采用的事务操作来保证数据的一致性,级联更新在单独一个函数中实现,函数代码如下:

保存按钮事件的功能除了同步改变的数据到数据库以外,还会对具体的操作记录日志并写入数据库日志表中,这个日志主要用于多台数据库服务器的同步操作。

5.绑定数据的控件数据单元的值发生变化产生时的响应函数代码如下:


6.当用户在输入数据非法是执行如下函数;


7.导出数据到excel或word:

8.滚动显示数据表的所有数据:


9.分页显示函数功能:


10.导入excel的数据到控件中(DataGridView控件):


11.浏览地图功能实现:


12.树形节点选中时功能的处理,不同节点有不同的处理方式(同一层是同样的功能,只是处理的数据不同而已):


13.树形节点被展开时执行的相应功能实现如下:


14.开始编辑控件数据的时候执行的函数功能实现如下:


15.结束编辑控件数据的时候执行的函数功能实现如下:

到此整个同样数据管理模块的功能已经实现,这里需要强调一点的是,当在判断对于的属性数据是否对应有相应的空间数据时就是判断对于的表结构是否有“Shape”字段,空间数据里面还涉及到很多概念以后在介绍管理空间数据时会详细介绍。还有一点就是上面实现图层的可视化显示(地图)后面会详细介绍,至于word和excel的导入导出功能是在一个通过用的工具类中实现,以方便整个程序中都可以使用,日志的写入也是专门的日志帮助类实现。




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics