日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java數(shù)據(jù)庫(kù)編程中查詢結(jié)果的表格式輸出

瀏覽:141日期:2024-06-24 13:23:02
內(nèi)容: Java數(shù)據(jù)庫(kù)編程中查詢結(jié)果的表格式輸出--------------------------------------------------------------------------------陜西財(cái)經(jīng)學(xué)院 于波 【內(nèi)容摘要】本文較為詳細(xì)地介紹了在Java數(shù)據(jù)庫(kù)編程中,利用表格輸出查詢結(jié)果的方法;并對(duì)所涉及的類給以了簡(jiǎn)要說(shuō)明。 【關(guān)鍵字】類、對(duì)象、接口 【作者簡(jiǎn)介】男,26歲,陜西財(cái)經(jīng)學(xué)院研究生,師從陳逢吉教授,從事金融信息系統(tǒng)方面 的研究。 利用Java開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)時(shí),經(jīng)常需要在用戶界面上顯示查詢結(jié)果。由于SUN公司提供的JDK1.x開(kāi)發(fā)工具包不是可視化的集成開(kāi)發(fā)環(huán)境(IDE),不能象Delphi、VB那樣方便地把查詢結(jié)果在DBGrid等表格中顯示出來(lái)。因此,只能靠自己編寫(xiě)代碼來(lái)實(shí)現(xiàn)。 在實(shí)際應(yīng)用中,我們可以利用Vector、JTable、AbstractTableModel等三個(gè)類較好地解決這一問(wèn)題。以下,詳細(xì)介紹一下實(shí)現(xiàn)方法。 一、 類Vector、類JTable及類AbstractTableModel簡(jiǎn)介: 1、 類Vector: 類Vector是Java的歷史集合類,隸屬于java.util包。它包裝了異構(gòu)鏈表和數(shù)組雜合體,具有以下兩個(gè)特點(diǎn): * 向量是異構(gòu)的,不要求每個(gè)元素的類型相同,向量中可以混合多種對(duì)象類型; * 向量是數(shù)組雜合體,因?yàn)樗鼈兛梢栽谠黾釉貢r(shí)動(dòng)態(tài)增大。 其異構(gòu)性正好符合數(shù)據(jù)庫(kù)記錄中屬性類型不一的特點(diǎn),而其動(dòng)態(tài)性也正好符合數(shù)據(jù)庫(kù)查詢時(shí),結(jié)果集記錄個(gè)數(shù)不定的特點(diǎn)。 類Vector定義如下: public class Vector extends AbstractList implements List , Cloneable , Serializable{…} 實(shí)現(xiàn)了向量成員的查找、新增、刪除等方法。如:add(Object obj)可方便地加入一個(gè)對(duì)象;get(int index)可方便地得到向量中的一個(gè)對(duì)象;remove(Object obj)則可方便地刪除向量中一個(gè)對(duì)象。 2、 類JTable: JTable組件是Swing組件中比較復(fù)雜的小件,隸屬于javax.swing包,它能以二維表的形式顯示數(shù)據(jù)。類JTable定義如下: public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible{…} 類JTable在顯示數(shù)據(jù)時(shí)具有以下特點(diǎn): * 可定制性:可以定制數(shù)據(jù)的顯示方式和編輯狀態(tài); * 異構(gòu)性:可以顯示不同類型的數(shù)據(jù)對(duì)象,甚至包括顏色、圖標(biāo)等復(fù)雜對(duì)象; * 簡(jiǎn)便性:可以以缺省方式輕松地建立起一個(gè)二維表。 其可定制性可滿足不同用戶和場(chǎng)合的要求,異構(gòu)性也正好符合數(shù)據(jù)庫(kù)訪問(wèn)結(jié)果集中屬性類型不一的特點(diǎn)。類JTable提供了極為豐富的二維表格操作方法,如設(shè)置編輯狀態(tài)、顯示方式、選擇行列等,在此不一一贅述。 使用類JTable顯示數(shù)據(jù)之前,必須根據(jù)情況生成定制模型、單元繪制器或單元編輯器。類AbstractListModel用來(lái)定制用戶自己的數(shù)據(jù)模型,這個(gè)類在后面要介紹。TableCellRenderer接口用來(lái)定制單元繪制器,TableCellEditor接口用來(lái)定制單元編輯器,這兩個(gè)接口主要用于顏色對(duì)象的處理上,在示例中沒(méi)有用到,不做過(guò)多說(shuō)明。 3、 類AbstractTableModel: 類AbstractTableModel是一個(gè)抽象類,沒(méi)有完全實(shí)現(xiàn),不能實(shí)例化,使用時(shí)必須在程序中實(shí)現(xiàn)方法。它隸屬于javax.swing.table 。類定義如下: public abstract class AbstractTableModel extends Object implements TableModel, Serializable{…} 類AbstractTableModel提供了TableModel接口中絕大多數(shù)方法的缺省實(shí)現(xiàn)。TableModel接口定義了JTable 的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。用戶要生成自己的數(shù)據(jù)模型,本來(lái)可以通過(guò)實(shí)現(xiàn)TableModel接口中所有方法來(lái)滿足要求,但管理聽(tīng)眾表的功能對(duì)于所有數(shù)據(jù)模型是共同的,所以在javax.swing.table中又定義了類AbstractTableModel來(lái)處理這個(gè)工作。它既管理聽(tīng)眾表,又為生成TableModelEvents事件并委托給聽(tīng)眾提供了便利。 要想生成一個(gè)具體的TableModel作為AbstractTableMode的子類,至少必須實(shí)現(xiàn)下面三個(gè)方法: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column); 至此,我們可以建立一個(gè)簡(jiǎn)單二維表(5×5),實(shí)現(xiàn)方法如下: TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 5; } public int getRowCount() { 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ù)庫(kù)及其連接方法簡(jiǎn)介: 示例采用Sybase數(shù)據(jù)庫(kù)系統(tǒng),數(shù)據(jù)庫(kù)存放在數(shù)據(jù)庫(kù)服務(wù)器中。路徑為:D:WORKER,數(shù)據(jù)庫(kù)名為:worker.dbf。具有以下字段: 字段名 類型 Wno(職工號(hào)) VARCHAR Wname(職工名) VARCHAR Sex(性別) VARCHAR Birthday(出生日期) DATE Wage(工資) FLOAT 要連接此數(shù)據(jù)庫(kù),需使用java.sql包中的類DriverManager。此類是用于管理JDBC驅(qū)動(dòng)程序的實(shí)用程序類。它提供了通過(guò)驅(qū)動(dòng)程序取得連接、注冊(cè),撤消驅(qū)動(dòng)程序,設(shè)置登記和數(shù)據(jù)庫(kù)訪問(wèn)登錄超時(shí)等方法。具體連接方法如下: 第一步:定位、裝入和鏈接SybDriver類; driver='com.sybase.jdbc.SybDriver'; SybDriver sybdriver=(SybDriver)Class.forName(driver).newInstance(); 第二步:注冊(cè)SybDriver類; DriverManager.registerDriver(sybdriver); 第三步:取得連接(SybConnection)對(duì)象引用。 user='sa'; password=''; url='jdbc:sybase:Tds:202.117.203.114:5000/WORKER'; SybConnection connection=(SybConnection)DriverManager.getConnection (url,user,password); 建立完連接后,即可通過(guò)Statement接口進(jìn)行數(shù)據(jù)庫(kù)的查詢與更改。 三、 實(shí)現(xiàn)方法: 限于篇幅,在此只給出核心代碼,包引入、界面處理、變量定義等部分不再介紹。 第一步:對(duì)象聲明。 AbstractTableModel tm;//聲明一個(gè)類AbstractTableModel對(duì)象 JTable jg_table;//聲明一個(gè)類JTable對(duì)象 Vector vect;//聲明一個(gè)向量對(duì)象 JScrollPane jsp;//聲明一個(gè)滾動(dòng)杠對(duì)象 String title[]={'職工號(hào)','職工名','性別','出生日期','工資'}; //二維表列名 第二步:定制表格。 1、實(shí)現(xiàn)抽象類AbstractTableModel對(duì)象tm中的方法: vect=new Vector();//實(shí)例化向量 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.elementAt(row)).elementAt(column); else return null;}//取得單元格中的屬性值 public String getColumnName(int column){ return title[column];}//設(shè)置表格列名 public void setValueAt(Object value,int row,int column){} //數(shù)據(jù)模型不可編輯,該方法設(shè)置為空 public Class getColumnClass(int c){ return getValueAt(0,c).getClass(); }//取得列所屬對(duì)象類 public boolean isCellEditable(int row,int column){ return false;}//設(shè)置單元格不可編輯,為缺省實(shí)現(xiàn) }; 2、定制表格: jg_table=new JTable(tm);//生成自己的數(shù)據(jù)模型 jg_table.setToolTipText('顯示全部查詢結(jié)果');//設(shè)置幫助提示 jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //設(shè)置表格調(diào)整尺寸模式 jg_table.setCellSelectionEnabled(false);//設(shè)置單元格選擇方式 jg_table.setShowVerticalLines(true);//設(shè)置是否顯示單元格間的分割線 jg_table.setShowHorizontalLines(true); jsp=new JScrollPane(jg_table);//給表格加上滾動(dòng)杠 第三步:顯示查詢結(jié)果。 1、 連接數(shù)據(jù)庫(kù):第二部分已給出。 2、 數(shù)據(jù)庫(kù)查詢: Statement stmt=connection.createStatement(); ResultSet rs=stmt.executeQuery('select * from worker'); 3、 顯示查詢結(jié)果: vect.removeAllElements();//初始化向量對(duì)象 tm.fireTableStructureChanged();//更新表格內(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)境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()獲得記錄,然后通過(guò)類JTextField中的setText()方法,顯示出各個(gè)字段值。 二、如果不支持JDBC2.0,則可利用向量Vector按行取出JTable中數(shù)據(jù)。自定義一個(gè)指針,用來(lái)記錄位置。當(dāng)指針加1時(shí),取出上一行數(shù)據(jù)放入Vector中顯示;指針減1時(shí),取出下一行數(shù)據(jù)顯示。顯示方法同上。 需要說(shuō)明的是:代碼中沒(méi)有給出捕捉例外的部分,如SQLException,實(shí)際應(yīng)用中必須給出。此外,有些系統(tǒng)中,文本域中的漢字不一定能正確顯示,需借助其它方法實(shí)現(xiàn)。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd Java數(shù)據(jù)庫(kù)編程中查詢結(jié)果的表格式輸出--------------------------------------------------------------------------------
標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美国产极品| 日韩免费福利视频| 欧美日韩尤物久久| 精品欧美日韩精品| 国产极品模特精品一二| 亚洲一区导航| 玖玖玖国产精品| 久久久人人人| 超碰超碰人人人人精品| 国产成人精品一区二区三区免费| 国产精品欧美一区二区三区不卡| 天堂俺去俺来也www久久婷婷| 亚洲开心激情| 日韩精品视频中文字幕| 欧美有码在线| 日韩精品社区| 国产免费av一区二区三区| 国产精品资源| 国产videos久久| 亚洲黄色免费看| 蜜臀国产一区| 欧美福利在线| 老牛影视一区二区三区| 国产偷自视频区视频一区二区| 视频一区在线视频| 日韩一区网站| 欧美精品第一区| 成人在线丰满少妇av| 国产精品久久久久av电视剧| 国产99久久久国产精品成人免费| 免费精品国产| 老鸭窝毛片一区二区三区| 日韩在线一二三区| 日产欧产美韩系列久久99| 国产毛片久久久| 裤袜国产欧美精品一区| 国产一级久久| 综合一区av| 日欧美一区二区| 欧美国产中文高清| 婷婷激情一区| 美日韩精品视频| 久久国产尿小便嘘嘘| 精品国产精品久久一区免费式| 黑森林国产精品av| 亚洲综合二区| 国产精品第一| 欧美亚洲在线日韩| 国产亚洲欧美日韩精品一区二区三区| 国产va在线视频| 视频一区视频二区中文| 国产精品多人| 蜜桃视频欧美| 97久久超碰| 日韩高清中文字幕一区二区| 日韩中文字幕| av高清不卡| 中文字幕亚洲影视| 欧美少妇精品| 日韩精品第一| 99精品视频在线| 国产日本久久| 欧美日韩国产在线观看网站 | 精品国产麻豆| 亚洲欧美日韩专区| 久久精品国产精品亚洲毛片| 国精品一区二区| 国产精品一卡| 91精品电影| 国产精品成人3p一区二区三区| 久久网站免费观看| 好看的亚洲午夜视频在线| 中文字幕日韩高清在线| 福利一区和二区| 亚洲欧美网站在线观看| 久久精品国产福利| 亚洲另类av| 日本不卡一区二区三区| 欧美一区久久久| 日韩欧美精品综合| 日韩国产欧美视频| 黄色网一区二区| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产视频亚洲| 视频一区视频二区中文| 桃色av一区二区| 日韩中文字幕区一区有砖一区| 最新中文字幕在线播放 | 欧美精选一区二区三区| 精品国产不卡一区二区| 亚洲一区国产| 精品国产aⅴ| 日本欧美大码aⅴ在线播放| 日韩一区亚洲二区| 国产精品美女久久久久久不卡| 99精品视频在线| 成人在线超碰| 蜜桃av一区二区三区电影| 色欧美自拍视频| 日韩在线麻豆| 亚洲一区区二区| av在线资源| 精品久久在线| 丝袜美腿高跟呻吟高潮一区| 婷婷国产精品| 麻豆国产91在线播放| 日韩国产成人精品| 亚洲国产专区校园欧美| 欧美激情福利| 青青国产精品| 亚洲欧美高清| 午夜精品婷婷| 天堂av在线| 国产精品久久观看| 97成人在线| 日韩欧美中文字幕电影| 99精品在线| 日韩精品麻豆| 国产欧美日韩精品一区二区免费 | 日韩中文字幕亚洲一区二区va在线| 精品一区免费| 成人午夜在线| 精品久久在线| 国产极品一区| 国产福利一区二区精品秒拍| 蜜乳av另类精品一区二区| 国产午夜精品一区二区三区欧美| 日韩黄色大片| 日韩高清中文字幕一区二区| 欧美亚洲三级| 国产日韩在线观看视频| 99国产精品久久久久久久成人热 | 91视频久久| 中文在线免费视频| 国产精品红桃| 狠狠干成人综合网| 国产精品一页| 日韩中文字幕av电影| 国产精品国产三级国产在线观看| 国产探花在线精品| 黑丝一区二区三区| 国产一区二区三区视频在线| 韩日一区二区| 麻豆91小视频| 精品国产中文字幕第一页 | 激情婷婷久久| 欧美成a人片免费观看久久五月天| 欧美成人综合| 999久久久91| 国产精品久久久久久久久久妞妞| 久久精品国语| 日本v片在线高清不卡在线观看| 国产私拍福利精品视频二区| 美女精品视频在线| 日韩av午夜在线观看| 国产欧美一区| 日韩黄色大片网站| 久久中文字幕导航| 国产精品夜夜夜| 1024精品久久久久久久久| 红杏一区二区三区| 日本激情一区| 亚洲免费网址| 日本不卡视频一二三区| 欧美色图一区| 免费污视频在线一区| 婷婷综合网站| 黑人精品一区| 国产视频一区欧美| 99精品电影| 日韩欧美一区二区三区在线视频| 欧美日韩国产免费观看视频| 欧美日韩国产一区精品一区| 亚洲免费毛片| 国产精品大片| 999久久久免费精品国产| 国产在线成人| 在线视频精品| 中文字幕av一区二区三区四区| 亚洲无线观看| 国产精品亚洲成在人线| 欧美专区18| 综合国产视频| 91成人在线| 一区在线免费观看| 国产精品videossex久久发布| 国产精品嫩草99av在线| 美国三级日本三级久久99| 亚洲永久av| 另类亚洲自拍| 麻豆91精品视频| 黄色日韩在线| 久久99久久人婷婷精品综合| 亚洲精品乱码| 精品丝袜在线| 国产精品88久久久久久| 婷婷六月综合| 日韩专区一卡二卡| 婷婷精品进入| 欧美丝袜一区|