首先聲明,本人剛學JAVA不久,只是一隻菜鳥。下面的內容也談不上分享什麼經驗,只是把自己在用JAVA做資料庫課程設計時的一些想法用文字寫出來,希望對一些也是剛學JAVA的人有一點協助,當然也希望大家能夠不吝則教,指出裡面的不足與不合理的地方,以便我我能有所改進。
本人剛學JAVA不久,前陣子用JAVA做了一個資料庫的課程設計,主要是用於管理一個平面公司業務管理系統,功能一般般,都是一些查詢訂單,添加訂單,修改訂單的準系統,也使用了Regex,對資料的輸入類型做了一定的約束設定。下面談談我大概的製作過程。
首先是資料庫的建設,使用SQL SERVER建立了幾張表分別存放屬於不同狀態的訂單紀錄,比如預訂單,在建單,送貨單,曆史單之類的這幾張,建完了之後,對一些資料只能夠是在幾個資料之間選擇的做了一個約束,這樣是能夠保證插入的資料一定是幾個資料之中的一種,例如性別只是男或者女這樣的資料。但是對於一些資料欄位如果在資料庫這樣限制的話,對於將來的擴充也存在著一些弊端,比如我的訂單紀錄裡面有一個欄位是訂單型號,如果現在有A型和B型,那麼將來如果多了一種叫做C型的類型,那麼你在資料庫裡面的資料約束就需要進行相應的修改了。這就影響了將來的擴充性,如果誰有比較好的方法解決的話,請賜教下。
其次,是進行程式的設計,當然我的資料庫裡面沒有使用到預存程序這樣的比較複雜的東西,所以也相對比較簡單。接下來進行簡單的架構的設計,如介面的大概布局之類的。然後,也就是本次資料庫課程設計的重點了
我使用的開發工具是jbuilder2006,它裡面有個叫做dbswin的控制組,對於開發資料庫比較方面,但是它也有不足的地方,但是對電腦的配置要求比較高,沒有一定的較高的CPU主頻,和較大的記憶體空間,使用起來會很卡。(有兩個小方法可以稍微改善下,1,在jbuilder2006的安裝目錄下,找到bin/目錄下的一個名為jbuilder2006.config的檔案,裡面有一行是關於啟動並執行該軟體預設的最大的記憶體空間和最小空間,將它稍微改大的,但是是好像得符合一定的數字,可以改為最小256,最大512 2,在運行了jbuilder2006之後,開啟工作管理員,將該進程的優先順序設定為高)
1、串連資料庫的問題。jbuilder2006裡面有一個tool/database pliot可以進行資料庫的串連測試。
我是使用1433連接埠進行串連,以及相關的驅動。如果不能夠串連上的話,有可能是以下的幾個原因之一
:1433連接埠沒有開啟,可在命令提示字元下輸入netstat -an如果能夠找到1433連接埠是處於監聽狀態的,說明已經開啟了。要串連上大概有幾個檔案叫安裝:一個SQLSERVER的SP4的補丁,還有微軟為JDBC 的三個JAR包需要引入。詳細可以上網搜下。
2然後在使用jbuilder2006裡面的一個DataExpress拉出一個database,設定其串連到你的資料庫當中。
3、對於查詢使用的是用一張jdbtable表,然後設定其dataset,其dataset為querydataset(可以在DataExpress裡面找到),再在querydataset裡面設定相應的查詢語句,這種我一般都只是用來初始化一張表,而對於要根據某個關鍵字進行查詢的那種,我都是在相應的按鈕裡面嵌套相應的代碼:一般都是建立一個querydataset,然後再使用那種建立可以帶有參數的文法。就是在SQL語句裡面將其寫為一個?號,然後在下面再傳入相應的參數之類的。其它的製作模式都大概與此相同。
4、一個是關於表進行了相關的修改了之後的,動態重新整理問題。這個之前一直困擾了我很久,但是後來終於找到解決的辦法了,就是查詢或者修改完了之後,再在你的語句下面加多一句,例如是表A,則是A。getDataSet.refresh(),這樣就可以實現動態重新整理.其實這種方法是調用了原本預設工具條jdbNavToolBar裡面的refresh()函數。
5、發覺jbuilder裡面有一個比有用的或者是比較強大的功能就是兩個張之間可以設定主從關係,但是點擊其中一張的不同紀錄時,另一張表就會自動的產生相應的變化,說白,它的原理和巢狀查詢差不多,就是將一個查詢作為另一個查詢的參數。
6、在這次設計當中,也存在著以下幾個問題解決不了,一個是怎樣在一張jabtable裡面修改某一列的紀錄的時候,實作類別似jdbComboBox的功能,就是一個下拉框。好像可以設定其jdbpicklist,但是我試了下,在已經建的列,並且有了資料的情況下,設定了之後是沒有反應的。另外一個是報表功能的實現,雖然知道有一些組件如ireport等,但是關於怎樣在應用程式裡面調用它,這個問題我還解決不了。
上面就是自己的一些小小的經驗或者收穫。希望對你能夠有所協助,也希望大家指正。詳細的實現報告,可以發郵件到homssk@126.com跟我拿。當然也希望大家指出裡面的錯誤的地方。