本文是Monica Pawlan的"JDK 1.2 Roadmap: Putting It All Together"一文的展開(kāi),它講述了一個(gè)使用SQL命令和JDBC API的快速原型項(xiàng)目背后的故事。這篇文章覆蓋了數(shù)據(jù)庫(kù)表的定義和Swing組件的使用,而且在整個(gè)過(guò)程中給出了詳盡的代碼和大量的屏幕抓圖。
在"JDK 1.2 Roadmap: Putting It All Together"這篇文章里,我們熟悉了 "杜克的面包店"的擁有人和操作者Kate Cookie。Kate曾經(jīng)請(qǐng)程序員Madhavi Rao來(lái)為"杜克的面包店"設(shè)計(jì)了軟件架構(gòu)。在完成這項(xiàng)工作后,Madhavi去參與一個(gè)網(wǎng)上零售商的大規(guī)模java開(kāi)發(fā)項(xiàng)目,因?yàn)镵ate還需要一個(gè)原型系統(tǒng),Madhavi就把這個(gè)工作推薦給了我。
Microsoft 推出了超越ODBC的一些新API,例如OLE(Object Linking and Embedding)DB,ADO(Active X Data Objects)和RDS(Remote Data Service)。OLE DB和ADO也是面向?qū)ο蟮目梢詧?zhí)行SQL命令的數(shù)據(jù)庫(kù)接口。然而OLE DB 是一種為工具而不是為開(kāi)發(fā)人員設(shè)計(jì)的低層接口。ADO要更新些,更類(lèi)似JDBC API一些,但是它不是純的Java。RDS提供了類(lèi)似于JDBC API的RowSet工具的功能,但是RDS并不是用Java編程語(yǔ)言寫(xiě)的,而且不可移植。
Kate Cookie正在使用一臺(tái)運(yùn)行Windows 98的機(jī)器,而這臺(tái)機(jī)器上還安裝了Micosoft Access。所以我們需要按照以下幾步通過(guò)JDBC-ODBC橋來(lái)進(jìn)行通信,并且連接到名為BakeryBook的數(shù)據(jù)庫(kù)。
"杜克的面包店"數(shù)據(jù)庫(kù)名為BakeryBook.mdb。選擇這個(gè)條目,然后點(diǎn)擊"Add"按鈕。這時(shí)將會(huì)出現(xiàn)另一個(gè)標(biāo)題為"Create New Data Source"的窗口。選擇"Microsoft Access Driver"條目,然后點(diǎn)擊"Finish"按鈕。
下面的代碼片段來(lái)自于叫做DukeBakery的主類(lèi)。這里您可以看到基本GUI組件的創(chuàng)建過(guò)程。 public class DukeBakery extends JFrame { PRivate DataPanel screenvar; private JTextArea msgout; private Connection dbconn;
public DukeBakery() { super( "DUKE'S BAKERY" ); // Set up GUI environment Container p = getContentPane(); screenvar = new DataPanel(); msgout = new JTextArea( 8, 40 ); p.setLayout( new FlowLayout() ); p.add( new JScrollPane( screenvar ) ); p.add( new JScrollPane(msgout) );
語(yǔ)句super( "DUKE'S BAKERY" );的執(zhí)行調(diào)用了super類(lèi)Jframe的構(gòu)造函數(shù),并將字符串"DUKE'S BAKERY"放置到窗口的標(biāo)題欄上。然后我們就得到了一個(gè)容器對(duì)象p,它創(chuàng)建一個(gè)用來(lái)連接組件以供顯示的內(nèi)容窗格(content pane)。接下來(lái)一個(gè)DataPanel對(duì)象被實(shí)例化。這是我自已定義的一個(gè)類(lèi),我們將在下一節(jié)中具體分析它的代碼。同時(shí),一個(gè)有8字符行和40字符列的JtextArea被實(shí)例化。語(yǔ)句p.setLayout( new FlowL