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

第一篇文章介绍这个功能的时候,我贴出了这个模块运行的界面,从界面可以看出主要用到了两个控件,左边是一个树形控件用于按类别显示所有的属性表的名称,通过鼠标就可以选择一个需要查看、修改的表,右边是一个绑定了数据集的表数据显示控件,在这个控件中可以删除、添加和修改表的内容。除了这两个主要控件以外,就是一些用于显示文本提示的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的导入导出功能是在一个通过用的工具类中实现,以方便整个程序中都可以使用,日志的写入也是专门的日志帮助类实现。
分享到:
相关推荐
这个是我博客《基于ArcGIS10.0和Oracle10g的空间数据管理平台三(C#开发)》中提到的界面开发库使用的视频教程,非常详细,只要照着视频教程做就可以设计出类似Office2007的界面风格,还有多种界面皮肤和支持多标签...
首先,SDE(Spatial Database Engine)是Esri公司开发的一种用于存储和管理地理空间数据的组件,它可以与多种数据库系统如Oracle、SQL Server等集成,提供强大的空间数据处理能力。在C#环境中,通过ArcObjects库,...
轴类零件加工工艺设计.zip
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
seaborn基本绘图人力资源数据集
移动机器人(sw三维)
自制html网页源代码查看器
3吨叉车的液压系统设计().zip
1_实验三 扰码、卷积编码及交织.ppt
北京交通大学软件学院自命题科目考试大纲.pdf
雅鲁藏布江流域 shp矢量数据 (范围+DEM).zip
基于RUST的数据结构代码示例,栈、队列、图等
NIFD:2024Q1房地产金融报告
详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/146916652
【工业机器视觉定位软件Vision-Detect】基于C#的WPF与Halcon开发的工业机器视觉定位软件(整套源码),开箱即用 有用户登录,图片加载,模板创建,通讯工具,抓边抓圆,良率统计,LOG日志,异常管理,九点标定和流程加载保存等模块,功能不是很完善,适合初学者参考学习。 资源介绍请查阅:https://blog.csdn.net/m0_37302966/article/details/146912206 更多视觉框架资源:https://blog.csdn.net/m0_37302966/article/details/146583453
内容概要:本文档详细介绍了Java虚拟机(JVM)的相关知识点,涵盖Java内存模型、垃圾回收机制及算法、垃圾收集器、内存分配策略、虚拟机类加载机制和JVM调优等内容。首先阐述了Java代码的编译和运行过程,以及JVM的基本组成部分及其运行流程。接着深入探讨了JVM的各个运行时数据区,如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区等的作用和特点。随后,文档详细解析了垃圾回收机制,包括GC的概念、工作原理、优点和缺点,并介绍了几种常见的垃圾回收算法。此外,文档还讲解了JVM的分代收集策略,新生代和老年代的区别,以及不同垃圾收集器的工作方式。最后,文档介绍了类加载机制、JVM调优的方法和工具,以及常用的JVM调优参数。 适合人群:具备一定Java编程基础的研发人员,尤其是希望深入了解JVM内部机制、优化程序性能的技术人员。 使用场景及目标:①帮助开发人员理解Java代码的编译和执行过程;②掌握JVM内存管理机制,包括内存分配、垃圾回收等;③熟悉类加载机制,了解类加载器的工作原理;④学会使用JVM调优工具,掌握常用调优参数,提升应用程序性能。 其他说明:本文档内容详尽,适合用作面试准备材料和技术学习资料,有助于提高开发人员对JVM的理解和应用能力。
Android项目原生java语言课程设计,包含LW+ppt
戴德梁行&中国房地产协会:2021亚洲房地产投资信托基金研究报告
Android项目原生java语言课程设计,包含LW+ppt
Thinkphp6.0+vue个人虚拟物品发卡网站源码 支持码支付对接 扫码自动发货 源码一共包含两个部分thinkphp6.0后端文件,以及vue前端文件.zip