時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
?? 我們?cè)谶@里講談到創(chuàng)建表格和數(shù)據(jù)庫(kù)交換的問題,實(shí)際開發(fā)中肯定會(huì)遇到數(shù)據(jù)庫(kù)交互的問題,對(duì)數(shù)據(jù)庫(kù)的操作也是實(shí)現(xiàn)更多功能的前提。
?? 應(yīng)用程序需要將用戶填入的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中,同時(shí)又要將數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀取到前臺(tái)應(yīng)用程序供用戶查詢。而表格工具無疑是這個(gè)用戶與數(shù)據(jù)庫(kù)之間交互理想的中間平臺(tái)。筆者今天就跟大家分享一下,再Java平臺(tái)中建立表格的一些技巧。
?? 一、是否允許用戶對(duì)記錄進(jìn)行重排序?
?? 當(dāng)從數(shù)據(jù)庫(kù)中讀取記錄然后反映在表格中,有很多地方可以控制記錄的排序。在不排序的情況下,從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)的時(shí)候是根據(jù)記錄創(chuàng)建的時(shí)間先后順序反映在前臺(tái)的表格中。為了控制顯示的順序,數(shù)據(jù)庫(kù)管理員可以在數(shù)據(jù)庫(kù)層面上,針對(duì)這張表格創(chuàng)建一張視圖,并在視圖中設(shè)置排序規(guī)則,來改變默認(rèn)的排序順序。這張方式效率比較高,但是也比較死板。因?yàn)橹挥袛?shù)據(jù)庫(kù)管理員才能夠更改這個(gè)排序規(guī)則。其次在Java平臺(tái)中,將相關(guān)的SQL語句傳遞給數(shù)據(jù)庫(kù)以獲取想要的數(shù)據(jù)時(shí),也可以利用order by關(guān)鍵字來設(shè)置排序的順序。不過這跟數(shù)據(jù)庫(kù)層面上設(shè)置一樣,也有一個(gè)致命的缺陷,即這個(gè)排序規(guī)則必須預(yù)先設(shè)置好。如果用戶不滿意當(dāng)前的排序規(guī)則,則必須要系統(tǒng)管理員或者開發(fā)人員幫忙才能夠更改排序方式。顯然這兩個(gè)排序方式都不是很靈活。
?? 其實(shí)用戶需要的是在前臺(tái)應(yīng)用程序窗口中,可以根據(jù)需要對(duì)任何一個(gè)字段進(jìn)行排序。如點(diǎn)擊某個(gè)字段名字,就根據(jù)這個(gè)字段名進(jìn)行排序。在Java平臺(tái)創(chuàng)建表格的類中,本身就已經(jīng)集成了重新排列的功能。如在創(chuàng)建表格的時(shí)候,可能需要用到一個(gè)JTableHeader類(可以用這個(gè)類創(chuàng)建不支持滾動(dòng)條的表格),在這個(gè)類中,有一個(gè)setRecorderingAllowed方法,其會(huì)有true與false兩個(gè)返回值。如果這個(gè)方法返回的時(shí)true,則表示允許用戶在這個(gè)表格上對(duì)記錄進(jìn)行重新排序。如果返回的是false的話,則表示用戶無法在表格上對(duì)記錄進(jìn)行重新排序。如果不滿意現(xiàn)在的排序規(guī)則,只有要求系統(tǒng)管理員或者開發(fā)人員在后臺(tái)更改排序規(guī)則。
?? 對(duì)這個(gè)排序規(guī)則的設(shè)置,筆者有一個(gè)建議。首先程序開發(fā)人員或者數(shù)據(jù)庫(kù)管理人員要根據(jù)用戶常見的需求,即最常用的排序規(guī)則來進(jìn)行設(shè)置。如此的話,用戶一打開前臺(tái)表格,就可以得到自己想要的排序方式。然后在表格上也允許用戶進(jìn)行重新排序。當(dāng)用戶有需要的時(shí)候,可以輕易實(shí)現(xiàn)按任何一個(gè)字段進(jìn)行排序。筆者認(rèn)為這種排序規(guī)則比較合理。在實(shí)際應(yīng)用程序開發(fā)中,筆者也是如此做的。不過這里需要注意一點(diǎn),如果查詢出來的紀(jì)錄比較多,此時(shí)即使在前臺(tái)對(duì)記錄進(jìn)行排序,效率也會(huì)比較低。為此對(duì)于大記錄的表格,筆者的建議是在數(shù)據(jù)庫(kù)設(shè)計(jì)或者應(yīng)用程序開發(fā)中,就要評(píng)估用戶最常常用的排序規(guī)則。如在產(chǎn)品信息窗口中,可以按關(guān)鍵字或者產(chǎn)品類別進(jìn)行排序。如此就可以最大程度的減少二次排序,提高應(yīng)用程序的性能。
?? 二、是否允許對(duì)表格中的內(nèi)容進(jìn)行編輯?
?? 在表格創(chuàng)建的時(shí)候,還需要注意是否允許用戶對(duì)表格中的數(shù)據(jù)進(jìn)行更改。對(duì)于這一點(diǎn)程序開發(fā)人員也可以在多個(gè)層面對(duì)其進(jìn)行控制。如某個(gè)表格對(duì)于任何用戶來說都是只讀的,只允許應(yīng)用程序?qū)ζ溥M(jìn)行更新,那么就可以在數(shù)據(jù)庫(kù)層面進(jìn)行控制。如對(duì)于系統(tǒng)日志表格來說,用戶就不能夠進(jìn)行更改,只有查詢。為此就可以針對(duì)這張表格創(chuàng)建一張只讀的視圖,供用戶查詢使用。而應(yīng)用程序在更新的時(shí)候,則直接更新對(duì)應(yīng)的基礎(chǔ)表格。這就是通過在數(shù)據(jù)庫(kù)層面對(duì)表格中的內(nèi)容是否允許編輯進(jìn)行控制。
?? 除此之外,還可以通過權(quán)限來進(jìn)行控制。如可以在數(shù)據(jù)庫(kù)中設(shè)置不同的用戶、不同的權(quán)限來控制前臺(tái)表格對(duì)應(yīng)的后臺(tái)數(shù)據(jù)庫(kù)表格的讀寫權(quán)限。在應(yīng)用程序中,也可以控制對(duì)這張表格中內(nèi)容的編輯能力。默認(rèn)情況下,利用Java提供的現(xiàn)有類創(chuàng)建表格時(shí),是允許用戶對(duì)表格中的內(nèi)容進(jìn)行編輯的。如用戶只要雙擊單元格,就可以對(duì)表格中的內(nèi)容進(jìn)行更改。如果系統(tǒng)管理員不希望用戶對(duì)表格中的內(nèi)容進(jìn)行更新,則就需要重構(gòu)JTable類中的isCellEdittable方法。默認(rèn)情況下,這個(gè)方法返回的值是true,表示允許用戶對(duì)其進(jìn)行更改。如果返回的時(shí)false的話,在禁止用戶對(duì)單元格進(jìn)行編輯。
?? 其實(shí),在應(yīng)用程序開發(fā)過程中,這個(gè)是一個(gè)動(dòng)態(tài)的過程。如就拿銷售訂單來說,如果單據(jù)編號(hào)是自動(dòng)編號(hào)的,那么就不允許用戶對(duì)單據(jù)編號(hào)這個(gè)列的內(nèi)容進(jìn)行更改。這個(gè)列中的內(nèi)容都是系統(tǒng)自動(dòng)產(chǎn)生的。相反,如果這個(gè)銷售訂單編號(hào)是手工創(chuàng)建的,那么就允許用戶對(duì)這個(gè)字段進(jìn)行更改。所以在應(yīng)用程序設(shè)計(jì)的時(shí)候,最好不要將這個(gè)寫死。一般可以在單據(jù)性別設(shè)置處進(jìn)行設(shè)置。即設(shè)置一個(gè)開關(guān),來控制是否允許用戶對(duì)表格中的單元格進(jìn)行編輯。
?? 三、記錄時(shí)單選還是多選?
?? 在使用Excel表格的時(shí)候,記錄的選擇模式有很多種。如用戶可以選擇一條記錄,也可以選擇多條連續(xù)的紀(jì)錄。甚至在其他鍵的幫助下,還可以選擇不連續(xù)的紀(jì)錄等等。特別是在同一個(gè)時(shí)間內(nèi)選擇多條記錄,這可以在很大程度上提高復(fù)制粘貼的效率。
?? 在利用Java語言創(chuàng)建的表格中,也具有類似的功能。如在創(chuàng)建表格的類中有一個(gè)setSelectionMode方法,就是用來控制選擇模式的。默認(rèn)情況下,這個(gè)方法有三個(gè)返回值。如果返回的是0,表示用戶在表格中只允許選擇一條記錄,如不允許選擇多條。如果返回的時(shí)1的話,則表示用戶可以通過鼠標(biāo)拖拉等手段同時(shí)選擇多條記錄,單是這些記錄必須連續(xù)的,而不允許分散。如果這個(gè)方法返回的值是2,則表示用戶可以隨意的選擇多條記錄,這些記錄可以是連續(xù)的,也可以是不連續(xù)的。這個(gè)記錄的選擇模式,一般情況下不會(huì)對(duì)性能或者安全產(chǎn)生不利的影響。故到底采用哪種方式,最重要的還是要根據(jù)用戶的需求來定。
?? 除了以上的這些設(shè)置外,程序開發(fā)人員還可以對(duì)表格的外觀進(jìn)行定義。如是否允許用戶調(diào)整列的寬度;是否允許按比例來調(diào)整表格所有列的寬度;如是否啟用自動(dòng)調(diào)整功能,即按照字段的大小來進(jìn)行自動(dòng)調(diào)整;還是只允許調(diào)整最后一列的寬度等等。一般情況下,如果沒有特殊的需要,可以允許用戶根據(jù)需要調(diào)整任一列的寬度。特別是在需求不能夠確定的情況下,可以這么做。免得在用戶需要的時(shí)候,再去更改系統(tǒng)源代碼或者相關(guān)的設(shè)置。
?? 雖然說以上這些內(nèi)容只是對(duì)表格的一些外觀的設(shè)置,如記錄的排序規(guī)則或者列的可編輯性,但是這些內(nèi)容對(duì)于應(yīng)用程序非常的重要,也是用戶用的最頻繁的一些操作。這不僅關(guān)系到后臺(tái)數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全性,還會(huì)影響到應(yīng)用程序的性能。程序開發(fā)人員必須對(duì)這方面的內(nèi)容引起重視。根據(jù)用戶的需求,切實(shí)的做好這方面的開發(fā)定制。
關(guān)鍵詞標(biāo)簽:Java,數(shù)據(jù)庫(kù)
相關(guān)閱讀
熱門文章 eclipse中如何設(shè)置字體大小_eclipse字體大小設(shè)置方法 jsp 實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì) Eclipse優(yōu)化設(shè)置教程_Eclipse卡頓優(yōu)化設(shè)置技巧 JS截取字符串常用方法詳細(xì)整理
人氣排行 JS驗(yàn)證日期格式是否正確 Java中3DES加密解密調(diào)用示例 Java技術(shù)-J2EE開發(fā)日記-MyEclipse快捷鍵與插件大全 eclipse中如何設(shè)置字體大小_eclipse字體大小設(shè)置方法 Eclipse優(yōu)化設(shè)置教程_Eclipse卡頓優(yōu)化設(shè)置技巧 JavaScript基本語法-常量和變量 用Java刪除文件夾里的所有文件 100多個(gè)很有用的JavaScript函數(shù)以及基礎(chǔ)寫法匯總