![Java數(shù)據(jù)庫編程中查詢結(jié)果的表格式輸出_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/a6bf4676-cad3-4a3b-b730-3d8e6daafbf5/a6bf4676-cad3-4a3b-b730-3d8e6daafbf51.gif)
![Java數(shù)據(jù)庫編程中查詢結(jié)果的表格式輸出_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/a6bf4676-cad3-4a3b-b730-3d8e6daafbf5/a6bf4676-cad3-4a3b-b730-3d8e6daafbf52.gif)
![Java數(shù)據(jù)庫編程中查詢結(jié)果的表格式輸出_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/a6bf4676-cad3-4a3b-b730-3d8e6daafbf5/a6bf4676-cad3-4a3b-b730-3d8e6daafbf53.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Java 數(shù)據(jù)庫編程中查詢結(jié)果的表格式輸出利用Java開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)時,經(jīng)常需要在用戶界面上顯示查詢結(jié)果。由于SUN公司提供的JDK1.X開發(fā)工具包不是可視化的集成開發(fā)環(huán)境(IDE),不能象Delphi、VB那樣方便地把查詢結(jié)果在 DBGrid 等表格中顯示出來。因此,只能靠自己編寫代碼來實現(xiàn)。 在實際應(yīng)用中,我們可以利用 Vector 、 JTable 、 AbstractTableModel 等三個類較好地解決 這一問題。以下,詳細介紹一下實現(xiàn)方法。一、類 Vector 、類 JTable 及類 AbstractTableModel 簡介:1 、 類 Vector :類 Vector
2、是 Java 的歷史集合類,隸屬于 java.util 包。它包裝了異構(gòu)鏈表和數(shù)組雜合體, 具有以下兩個特點:* 向量是異構(gòu)的,不要求每個元素的類型相同,向量中可以混合多種對象類型;* 向量是數(shù)組雜合體,因為它們可以在增加元素時動態(tài)增大。 其異構(gòu)性正好符合數(shù)據(jù)庫記錄中屬性類型不一的特點,而其動態(tài)性也正好符合數(shù)據(jù)庫查詢 時,結(jié)果集記錄個數(shù)不定的特點。類 Vector 定義如下:public class Vector eXtends AbstractListimpleme nts List , Cion eable , Serializable實現(xiàn)了向量成員的查找、新增、刪除等方法。如:add(O
3、bject obj) 可方便地參加一個對象;get(int indeX) 可方便地得到向量中的一個對象;remove(Object obj) 那么可方便地刪除向量中一個對象。2、 類 JTable :JTable 組件是 Swing 組件中比擬復(fù)雜的小件,隸屬于 javaX.swing 包,它能以二維表的形 式顯示數(shù)據(jù)。類 JTable 定義如下:public class JTable eXtends JComponentimplements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListe
4、ner, CellEditorListener, Accessible 類 JTable 在顯示數(shù)據(jù)時具有以下特點:* 可定制性:可以定制數(shù)據(jù)的顯示方式和編輯狀態(tài);* 異構(gòu)性:可以顯示不同類型的數(shù)據(jù)對象,甚至包括顏色、圖標(biāo)等復(fù)雜對象;* 簡便性:可以以缺省方式輕松地建立起一個二維表。其可定制性可滿足不同用戶和場合的要求, 異構(gòu)性也正好符合數(shù)據(jù)庫訪問結(jié)果集中屬性類型 不一的特點。 類 JTable 提供了極為豐富的二維表格操作方法, 如設(shè)置編輯狀態(tài)、 顯示方式、 選擇行列等,在此不一一贅述。使 用類 JTable 顯示數(shù)據(jù)之前, 必須根據(jù)情況生成定制模型、 單元繪制器或單元編輯器。 類 Abst
5、ractListModel 用 來定制用 戶 自 己的 數(shù)據(jù) 模型, 這個 類在 后面要 介紹 。 TableCellRenderer 接口用來定制單元繪制器, TableCellEditor 接口用來定制單元編輯器, 這兩個接口主 要用于顏色對象的處理上,在例如中沒有用到,不做過多說明。3、類 AbstractTableModel 類 AbstractTableModel 是一個抽象類,沒有完全實現(xiàn),不能實例化,使用時必須在程序中 實現(xiàn)方法。它隸屬于 javax.swing.table 。類定義如下: public abstract class AbstractTableModel exte
6、nds Objectimpleme nts TableModel, Serializable類 AbstractTableModel 提供了 TableModel 接口中絕大多數(shù)方法的缺省實現(xiàn)。 TableModel 接口定義了 JTable 的根底數(shù)據(jù)結(jié)構(gòu)。用戶要生成自己的數(shù)據(jù)模型,本來可以通過實現(xiàn)TableModel 接口中所有方法來滿足要求,但管理聽眾表的功能對于所有數(shù)據(jù)模型是共同 的,所以在 javax.swing.table 中又定義了類 AbstractTableModel 來處理這個工作。它既 管理聽眾表,又為生成 TableModelEvents 事件并委托給聽眾提供了便利。
7、要想生成一個具體的 TableModel 作為 AbstractTableMode 的子類,至少必須實現(xiàn)下面三個 方法:public int getRowCount();public int getColumnCount();public Object getValueAt(int row, int column);至此,我們可以建立一個簡單二維表(5X 5),實現(xiàn)方法如下:TableModel dataModel = new AbstractTableModel() public int getColumnCount() return 5; public int getRowCount()
8、return 5;public Object getValueAt(int row, int col) return new Integer(row*col); ;JTable table = new JTable(dataModel);JScrollPane scrollpane = new JScrollPane(table);二、數(shù)據(jù)庫及其連接方法簡介:例如采用Sybase數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫存放在數(shù)據(jù)庫效勞器中。路徑為:D:WORKER數(shù)據(jù)庫名為: worker.dbf 。具有以下字段:字段名類型Wno(職工號)VARCHARWnam(e 職工名)VARCHARSex (性別)VARCH
9、ARBirthday (出生日期)DATEWage (工資)FLOAT 要連接此數(shù)據(jù)庫,需使用 java.sql 包中的類 DriverManager 。此類是用于管理驅(qū)動程序的 實用程序類。它提供了通過驅(qū)動程序取得連接、注冊,撤消驅(qū)動程序,設(shè)置登記和數(shù)據(jù)庫訪問登錄超時等方法。具體連接方法如下: 第一步:定位、裝入和鏈接 SybDriver 類;driver="com.sybase.jdbc.SybDriver"SybDriver sybdriver=(SybDriver)Class.forName(driver).newInstance(); 第二步:注冊 SybDriv
10、er 類;DriverManager.registerDriver(sybdriver); 第三步:取得連接( SybConnection )對象引用。 user="sa"password="" url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER"SybConnection connection=(SybConnection)DriverManager.getConnection (url,user,password);建立完連接后,即可通過 Statement 接口進行數(shù)據(jù)庫的查詢與更改
11、。三、實現(xiàn)方法:限于篇幅,在此只給出核心代碼,包引入、界面處理、變量定義等局部不再介紹。 第一步:對象聲明。AbstractTableModel tm;/ 聲明一個類 AbstractTableModel 對象 JTable jg_table;/ 聲明一個類 JTable 對象Vector vect;/ 聲明一個向量對象 JScrollPane jsp;/ 聲明一個滾動杠對象 String title=" 職工號 "," 職工名 "," 性別 "," 出生日期 "," 工資 " / 二維表列名
12、第二步:定制表格。1、實現(xiàn)抽象類 AbstractTableModel 對象 tm 中的方法: vect=new Vector();/實例化向量tm=new AbstractTableModel() public int getColumnCount() return title.length;/ 取得表格列數(shù) public int getRowCount() return vect.size();/ 取得表格行數(shù) public Object getValueAt(int row,int column) if(!vect.isEmpty() return(Vector)vect.element
13、At(row).elementAt(column); elsereturn null;/ 取得單元格中的屬性值 public String getColumnName(int column) return titlecolumn;/ 設(shè)置表格列名 public void setValueAt(Object value,int row,int column) / 數(shù)據(jù)模型不可編輯,該方法設(shè)置為空 public Class getColumnClass(int c) return getValueAt(0,c).getClass();/ 取得列所屬對象類public boolean isCellE
14、ditable(int row,int column) return false;/ 設(shè)置單元格不可編輯,為缺省實現(xiàn) ;2、定制表格: jg_table=new JTable(tm);/ 生成自己的數(shù)據(jù)模型jg_table.setToolTipText(" 顯示全部查詢結(jié)果 ");/ 設(shè)置幫助提示 jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);/ 設(shè)置表風(fēng)格整尺寸模式j(luò)g_table.setCellSelectionEnabled(false);/ 設(shè)置單元格選擇方式 jg_table.setShowVerticalL
15、ines(true);/設(shè)置是否顯示單元格間的分割線jg_table.setShowHorizontalLines(true);jsp=new JScrollPane(jg_table);/給表格加上滾動杠第三步:顯示查詢結(jié)果。1、 連接數(shù)據(jù)庫:第二局部已給出。2、 數(shù)據(jù)庫查詢:Statement stmt=connection.createStatement();ResultSet rs=stmt.executeQuery("select * from worker");3、顯示查詢結(jié)果: vect.removeAllElements();/ 初始化向量對象 tm.fir
16、eTableStructureChanged();/ 更新表格內(nèi)容 while(rs.next()Vector rec_vector=new Vector();/ 從結(jié)果集中取數(shù)據(jù)放入向量 rec_vector 中 rec_vector.addElement(rs.getString(1);rec_vector.addElement(rs.getString(2); rec_vector.addElement(rs.getString(3);rec_vector.addElement(rs.getDate(4); rec_vector.addElement(new Float(rs.getFloat(5);vect.addElement(rec_vector);/ 向量 rec_vector 參加向量 vect 中tm.fireTableStructureChanged();/ 更新表格,顯示向量 vect 的內(nèi)容 例圖如下:假設(shè)要實現(xiàn)示圖中記錄前翻、后翻的效果,有兩種方法:一、如果軟件環(huán)境支持 2.0 ,可直接利用 rs.prevoius(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)工程質(zhì)量安全監(jiān)督人員考試題庫含答案
- 全國青少年文化遺產(chǎn)知識大賽(小學(xué)組)參考試題庫(含答案)
- 年產(chǎn)1000萬件醫(yī)療用品及20000噸醫(yī)用復(fù)合材料建設(shè)項目可行性研究報告寫作模板-申批備案
- 2025年江西機電職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年武漢鐵路橋梁職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年曲靖醫(yī)學(xué)高等??茖W(xué)校高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年新疆工業(yè)職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 專題01 名詞(第02期) 帶解析
- 部編版語文五年級下冊第13課《人物描寫一組》精美課件
- 2025工業(yè)研發(fā)設(shè)計軟件行業(yè)趨勢分析與發(fā)展前景
- 2024-2025學(xué)年廣東省深圳市南山區(qū)監(jiān)測數(shù)學(xué)三年級第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 廣東2024年廣東金融學(xué)院招聘專職輔導(dǎo)員9人筆試歷年典型考點(頻考版試卷)附帶答案詳解
- 江蘇省南京鼓樓區(qū)2024年中考聯(lián)考英語試題含答案
- 兒科護理學(xué)試題及答案解析-神經(jīng)系統(tǒng)疾病患兒的護理(二)
- 15篇文章包含英語四級所有詞匯
- 王陽明心學(xué)完整版本
- 四年級上冊豎式計算300題及答案
- 課題研究實施方案 范例及課題研究方法及技術(shù)路線圖模板
- 牙髓炎中牙髓干細胞與神經(jīng)支配的相互作用
- 【2022屆高考英語讀后續(xù)寫】主題升華積累講義及高級句型積累
- 西方法律思想史ppt
評論
0/150
提交評論