Java下创建表格与数据库交互的几个要点

specialbrian 2009-09-11

我们在这里讲谈到创建表格和数据库交换的问题,实际开发中肯定会遇到数据库交互的问题,对数据库的操作也是实现更多功能的前提。

应用程序需要将用户填入的数据保存到数据库中,同时又要将数据库中的数据读取到前台应用程序供用户查询。而表格工具无疑是这个用户与数据库之间交互理想的中间平台。笔者今天就跟大家分享一下,再Java平台中建立表格的一些技巧。

一、是否允许用户对记录进行重排序?

当从数据库中读取记录然后反映在表格中,有很多地方可以控制记录的排序。在不排序的情况下,从数据库中读取数据的时候是根据记录创建的时间先后顺序反映在前台的表格中。为了控制显示的顺序,数据库管理员可以在数据库层面上,针对这张表格创建一张视图,并在视图中设置排序规则,来改变默认的排序顺序。这张方式效率比较高,但是也比较死板。因为只有数据库管理员才能够更改这个排序规则。其次在Java平台中,将相关的SQL语句传递给数据库以获取想要的数据时,也可以利用order by关键字来设置排序的顺序。不过这跟数据库层面上设置一样,也有一个致命的缺陷,即这个排序规则必须预先设置好。如果用户不满意当前的排序规则,则必须要系统管理员或者开发人员帮忙才能够更改排序方式。显然这两个排序方式都不是很灵活。

其实用户需要的是在前台应用程序窗口中,可以根据需要对任何一个字段进行排序。如点击某个字段名字,就根据这个字段名进行排序。在Java平台创建表格的类中,本身就已经集成了重新排列的功能。如在创建表格的时候,可能需要用到一个JTableHeader类(可以用这个类创建不支持滚动条的表格),在这个类中,有一个setRecorderingAllowed方法,其会有true与false两个返回值。如果这个方法返回的时true,则表示允许用户在这个表格上对记录进行重新排序。如果返回的是false的话,则表示用户无法在表格上对记录进行重新排序。如果不满意现在的排序规则,只有要求系统管理员或者开发人员在后台更改排序规则。

对这个排序规则的设置,笔者有一个建议。首先程序开发人员或者数据库管理人员要根据用户常见的需求,即最常用的排序规则来进行设置。如此的话,用户一打开前台表格,就可以得到自己想要的排序方式。然后在表格上也允许用户进行重新排序。当用户有需要的时候,可以轻易实现按任何一个字段进行排序。笔者认为这种排序规则比较合理。在实际应用程序开发中,笔者也是如此做的。不过这里需要注意一点,如果查询出来的纪录比较多,此时即使在前台对记录进行排序,效率也会比较低。为此对于大记录的表格,笔者的建议是在数据库设计或者应用程序开发中,就要评估用户最常常用的排序规则。如在产品信息窗口中,可以按关键字或者产品类别进行排序。如此就可以最大程度的减少二次排序,提高应用程序的性能。

二、是否允许对表格中的内容进行编辑?

在表格创建的时候,还需要注意是否允许用户对表格中的数据进行更改。对于这一点程序开发人员也可以在多个层面对其进行控制。如某个表格对于任何用户来说都是只读的,只允许应用程序对其进行更新,那么就可以在数据库层面进行控制。如对于系统日志表格来说,用户就不能够进行更改,只有查询。为此就可以针对这张表格创建一张只读的视图,供用户查询使用。而应用程序在更新的时候,则直接更新对应的基础表格。这就是通过在数据库层面对表格中的内容是否允许编辑进行控制。

除此之外,还可以通过权限来进行控制。如可以在数据库中设置不同的用户、不同的权限来控制前台表格对应的后台数据库表格的读写权限。在应用程序中,也可以控制对这张表格中内容的编辑能力。默认情况下,利用Java提供的现有类创建表格时,是允许用户对表格中的内容进行编辑的。如用户只要双击单元格,就可以对表格中的内容进行更改。如果系统管理员不希望用户对表格中的内容进行更新,则就需要重构JTable类中的isCellEdittable方法。默认情况下,这个方法返回的值是true,表示允许用户对其进行更改。如果返回的时false的话,在禁止用户对单元格进行编辑。

其实,在应用程序开发过程中,这个是一个动态的过程。如就拿销售订单来说,如果单据编号是自动编号的,那么就不允许用户对单据编号这个列的内容进行更改。这个列中的内容都是系统自动产生的。相反,如果这个销售订单编号是手工创建的,那么就允许用户对这个字段进行更改。所以在应用程序设计的时候,最好不要将这个写死。一般可以在单据性别设置处进行设置。即设置一个开关,来控制是否允许用户对表格中的单元格进行编辑。

三、记录时单选还是多选?

在使用Excel表格的时候,记录的选择模式有很多种。如用户可以选择一条记录,也可以选择多条连续的纪录。甚至在其他键的帮助下,还可以选择不连续的纪录等等。特别是在同一个时间内选择多条记录,这可以在很大程度上提高复制粘贴的效率。

在利用Java语言创建的表格中,也具有类似的功能。如在创建表格的类中有一个setSelectionMode方法,就是用来控制选择模式的。默认情况下,这个方法有三个返回值。如果返回的是0,表示用户在表格中只允许选择一条记录,如不允许选择多条。如果返回的时1的话,则表示用户可以通过鼠标拖拉等手段同时选择多条记录,单是这些记录必须连续的,而不允许分散。如果这个方法返回的值是2,则表示用户可以随意的选择多条记录,这些记录可以是连续的,也可以是不连续的。这个记录的选择模式,一般情况下不会对性能或者安全产生不利的影响。故到底采用哪种方式,最重要的还是要根据用户的需求来定。

相关推荐