背景:c#开发C/S程序,甘特图界面,后台使用oracle数据库。
该甘特图界面是一个控件拖动界面,每个控件的移动代表着资源的分配情况。有多客户端操作。
方式一:
在一个用户进行拖动时,首先使用select * from tablename where 该资源记录的过滤条件 for update nowait,将该记录加锁,为提高效率,将其封装入存储过程中。
这样当另一个用户试图同时拖动时,会出现Exception提示资源正在被使用,禁止同时操作。
当第一个用户拖动操作完成时,将该行锁释放(执行rollback)。
好处:不用更改表结构,效率高。
方式二:
在后台数据库的分配的资源情况表中加入一个字段,用来做资源是否正在拖动的状态记录,如果正在被拖动,则更新为0,拖动完毕为1。
在一个用户进行拖动时,首先更改该状态记录为0,拖动完毕后,更新为1。
另一个用户进行同时拖动时,会先查看该字段是否为1。
好处:依赖后台数据库进行处理。
不好的地方:更改表结构,效率比方式一低。
方式三:
岗位管理责任制,限定不同权限或者不同的岗位操作不同的控件。:)

本文讨论了在C#开发的C/S程序中实现甘特图界面的方法,特别是如何通过数据库操作来管理多客户端间的资源分配。详细介绍了三种策略:直接锁定数据库记录、在数据库表中添加状态字段、以及岗位管理责任制,以确保界面的拖动操作能够高效且无冲突地进行。
2万+

被折叠的 条评论
为什么被折叠?



