成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java數據庫編程中查詢結果的表格式輸出

瀏覽:104日期:2024-06-24 13:23:02
內容: Java數據庫編程中查詢結果的表格式輸出--------------------------------------------------------------------------------陜西財經學院 于波 【內容摘要】本文較為詳細地介紹了在Java數據庫編程中,利用表格輸出查詢結果的方法;并對所涉及的類給以了簡要說明。 【關鍵字】類、對象、接口 【作者簡介】男,26歲,陜西財經學院研究生,師從陳逢吉教授,從事金融信息系統方面 的研究。 利用Java開發數據庫應用系統時,經常需要在用戶界面上顯示查詢結果。由于SUN公司提供的JDK1.x開發工具包不是可視化的集成開發環境(IDE),不能象Delphi、VB那樣方便地把查詢結果在DBGrid等表格中顯示出來。因此,只能靠自己編寫代碼來實現。 在實際應用中,我們可以利用Vector、JTable、AbstractTableModel等三個類較好地解決這一問題。以下,詳細介紹一下實現方法。 一、 類Vector、類JTable及類AbstractTableModel簡介: 1、 類Vector: 類Vector是Java的歷史集合類,隸屬于java.util包。它包裝了異構鏈表和數組雜合體,具有以下兩個特點: * 向量是異構的,不要求每個元素的類型相同,向量中可以混合多種對象類型; * 向量是數組雜合體,因為它們可以在增加元素時動態增大。 其異構性正好符合數據庫記錄中屬性類型不一的特點,而其動態性也正好符合數據庫查詢時,結果集記錄個數不定的特點。 類Vector定義如下: public class Vector extends AbstractList implements List , Cloneable , Serializable{…} 實現了向量成員的查找、新增、刪除等方法。如:add(Object obj)可方便地加入一個對象;get(int index)可方便地得到向量中的一個對象;remove(Object obj)則可方便地刪除向量中一個對象。 2、 類JTable: JTable組件是Swing組件中比較復雜的小件,隸屬于javax.swing包,它能以二維表的形式顯示數據。類JTable定義如下: public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible{…} 類JTable在顯示數據時具有以下特點: * 可定制性:可以定制數據的顯示方式和編輯狀態; * 異構性:可以顯示不同類型的數據對象,甚至包括顏色、圖標等復雜對象; * 簡便性:可以以缺省方式輕松地建立起一個二維表。 其可定制性可滿足不同用戶和場合的要求,異構性也正好符合數據庫訪問結果集中屬性類型不一的特點。類JTable提供了極為豐富的二維表格操作方法,如設置編輯狀態、顯示方式、選擇行列等,在此不一一贅述。 使用類JTable顯示數據之前,必須根據情況生成定制模型、單元繪制器或單元編輯器。類AbstractListModel用來定制用戶自己的數據模型,這個類在后面要介紹。TableCellRenderer接口用來定制單元繪制器,TableCellEditor接口用來定制單元編輯器,這兩個接口主要用于顏色對象的處理上,在示例中沒有用到,不做過多說明。 3、 類AbstractTableModel: 類AbstractTableModel是一個抽象類,沒有完全實現,不能實例化,使用時必須在程序中實現方法。它隸屬于javax.swing.table 。類定義如下: public abstract class AbstractTableModel extends Object implements TableModel, Serializable{…} 類AbstractTableModel提供了TableModel接口中絕大多數方法的缺省實現。TableModel接口定義了JTable 的基礎數據結構。用戶要生成自己的數據模型,本來可以通過實現TableModel接口中所有方法來滿足要求,但管理聽眾表的功能對于所有數據模型是共同的,所以在javax.swing.table中又定義了類AbstractTableModel來處理這個工作。它既管理聽眾表,又為生成TableModelEvents事件并委托給聽眾提供了便利。 要想生成一個具體的TableModel作為AbstractTableMode的子類,至少必須實現下面三個方法: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column); 至此,我們可以建立一個簡單二維表(5×5),實現方法如下: 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); 二、 數據庫及其連接方法簡介: 示例采用Sybase數據庫系統,數據庫存放在數據庫服務器中。路徑為:D:WORKER,數據庫名為:worker.dbf。具有以下字段: 字段名 類型 Wno(職工號) VARCHAR Wname(職工名) VARCHAR Sex(性別) VARCHAR Birthday(出生日期) DATE Wage(工資) FLOAT 要連接此數據庫,需使用java.sql包中的類DriverManager。此類是用于管理JDBC驅動程序的實用程序類。它提供了通過驅動程序取得連接、注冊,撤消驅動程序,設置登記和數據庫訪問登錄超時等方法。具體連接方法如下: 第一步:定位、裝入和鏈接SybDriver類; driver='com.sybase.jdbc.SybDriver'; SybDriver sybdriver=(SybDriver)Class.forName(driver).newInstance(); 第二步:注冊SybDriver類; 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接口進行數據庫的查詢與更改。 三、 實現方法: 限于篇幅,在此只給出核心代碼,包引入、界面處理、變量定義等部分不再介紹。 第一步:對象聲明。 AbstractTableModel tm;//聲明一個類AbstractTableModel對象 JTable jg_table;//聲明一個類JTable對象 Vector vect;//聲明一個向量對象 JScrollPane jsp;//聲明一個滾動杠對象 String title[]={'職工號','職工名','性別','出生日期','工資'}; //二維表列名 第二步:定制表格。 1、實現抽象類AbstractTableModel對象tm中的方法: vect=new Vector();//實例化向量 tm=new AbstractTableModel(){ public int getColumnCount(){ return title.length;}//取得表格列數 public int getRowCount(){ return vect.size();}//取得表格行數 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];}//設置表格列名 public void setValueAt(Object value,int row,int column){} //數據模型不可編輯,該方法設置為空 public Class getColumnClass(int c){ return getValueAt(0,c).getClass(); }//取得列所屬對象類 public boolean isCellEditable(int row,int column){ return false;}//設置單元格不可編輯,為缺省實現 }; 2、定制表格: jg_table=new JTable(tm);//生成自己的數據模型 jg_table.setToolTipText('顯示全部查詢結果');//設置幫助提示 jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //設置表格調整尺寸模式 jg_table.setCellSelectionEnabled(false);//設置單元格選擇方式 jg_table.setShowVerticalLines(true);//設置是否顯示單元格間的分割線 jg_table.setShowHorizontalLines(true); jsp=new JScrollPane(jg_table);//給表格加上滾動杠 第三步:顯示查詢結果。 1、 連接數據庫:第二部分已給出。 2、 數據庫查詢: Statement stmt=connection.createStatement(); ResultSet rs=stmt.executeQuery('select * from worker'); 3、 顯示查詢結果: vect.removeAllElements();//初始化向量對象 tm.fireTableStructureChanged();//更新表格內容 while(rs.next()){ Vector rec_vector=new Vector(); //從結果集中取數據放入向量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的內容 例圖如下: 若要實現示圖中記錄前翻、后翻的效果,有兩種方法: 一、如果軟件環境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()獲得記錄,然后通過類JTextField中的setText()方法,顯示出各個字段值。 二、如果不支持JDBC2.0,則可利用向量Vector按行取出JTable中數據。自定義一個指針,用來記錄位置。當指針加1時,取出上一行數據放入Vector中顯示;指針減1時,取出下一行數據顯示。顯示方法同上。 需要說明的是:代碼中沒有給出捕捉例外的部分,如SQLException,實際應用中必須給出。此外,有些系統中,文本域中的漢字不一定能正確顯示,需借助其它方法實現。 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數據庫編程中查詢結果的表格式輸出--------------------------------------------------------------------------------
標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲成av人片一区二区梦乃| 久久www免费人成看片高清| 亚洲一区二区三区四区不卡| 99国产精品一区| 91精品一区二区三区在线观看| 午夜伦欧美伦电影理论片| 亚洲黄色大片| 国产精品电影院| 午夜精品偷拍| 亚洲精品一区二区三区在线观看| 精品写真视频在线观看| 欧美午夜精品理论片a级按摩| 五月天激情小说综合| 亚洲一区二区三区免费在线观看| 亚洲男帅同性gay1069| 亚洲国产导航| 自拍偷拍亚洲激情| 亚洲经典在线看| 亚洲精品欧美激情| 99精品视频免费| 一区二区三区免费看视频| 99热这里只有精品8| 一区二区三区视频在线观看| 中文亚洲欧美| 亚洲一本大道在线| 小嫩嫩精品导航| 亚洲国产美女搞黄色| 国产精品综合色区在线观看| 亚洲一区二区高清| 蜜桃久久精品乱码一区二区| 日韩影院免费视频| 欧美三区免费完整视频在线观看| 精品在线播放免费| 91精品国产色综合久久不卡电影| 国产精品69毛片高清亚洲| 欧美一级专区免费大片| 成人免费毛片aaaaa**| 精品国产免费久久| 99久久国产综合精品色伊| 欧美精品一区男女天堂| 91色综合久久久久婷婷| 欧美国产激情一区二区三区蜜月| 国产在线视频欧美一区二区三区| 综合激情成人伊人| 久久看片网站| 精品综合免费视频观看| 欧美一级日韩一级| 99国产精品一区| 综合久久久久综合| 免费一区视频| 国模无码大尺度一区二区三区| 欧美电影免费提供在线观看| 女女同性精品视频| 亚洲精品高清在线观看| 久久精品导航| 激情文学综合网| 精品伦理精品一区| 伊人成人网在线看| 日韩黄色一级片| 欧美一级专区免费大片| 欧美国产综合视频| 亚洲自拍偷拍欧美| 色婷婷精品久久二区二区蜜臀av | 久久精品国产在热久久| 91精品国产手机| 91片黄在线观看| 一区二区三区在线观看动漫| 欧美四级电影网| 99视频有精品| 亚洲精品乱码久久久久久日本蜜臀| 91久久人澡人人添人人爽欧美| 国产成人精品亚洲午夜麻豆| 国产精品私房写真福利视频| 午夜在线精品偷拍| 国产一区二区女| 国产精品久久久久久久久免费樱桃 | www.激情成人| 亚洲少妇中出一区| 亚洲综合清纯丝袜自拍| 久久久午夜精品| 美女爽到呻吟久久久久| 亚洲伦伦在线| 99久久精品免费精品国产| 亚洲欧洲中文日韩久久av乱码| 精品国产乱码久久久久久牛牛| 欧美电视剧免费全集观看| 欧美一级在线免费| 亚洲午夜电影在线观看| 欧美日韩国产在线一区| 亚洲精品v日韩精品| 欧美日韩精品一区二区三区四区| 欧美在线免费一级片| 日韩影院免费视频| 国产女人水真多18毛片18精品视频 | 一区二区三区四区蜜桃| 91久久线看在观草草青青| 99re免费视频精品全部| 亚洲国产一区二区三区| 欧美电影免费观看高清完整版| 国产精品日本| 成人综合激情网| 一区二区三区四区亚洲| 日韩女优电影在线观看| 新67194成人永久网站| 99精品国产视频| 午夜精品久久久久| 久久天天做天天爱综合色| 久久riav二区三区| 不卡在线观看av| 香蕉成人伊视频在线观看| xf在线a精品一区二区视频网站| 久久riav二区三区| 欧美日韩三级| 国产精品亚洲第一| 亚洲18影院在线观看| 久久人人97超碰com| 色综合久久久久综合体| 欧美日韩精品免费观看| 国产在线精品视频| 一区二区成人在线| 欧美大黄免费观看| 色欧美片视频在线观看在线视频| 亚洲午夜精品福利| 国产精品一二一区| 午夜精品久久久久久久99水蜜桃| 国产日韩欧美亚洲| 欧美疯狂性受xxxxx喷水图片| 国产亚洲一区在线| 欧美精品黄色| 国产精品系列在线观看| 亚洲一区中文日韩| 中文字幕av一区二区三区| 欧美一区二区视频观看视频| 免费h精品视频在线播放| 国产精品v欧美精品∨日韩| 国内一区二区视频| 首页亚洲欧美制服丝腿| 一区二区三区在线观看欧美| 国产日韩亚洲欧美综合| 日韩视频一区二区在线观看| 欧美在线视频全部完| 99成人在线| 欧美黄色一级视频| 国产·精品毛片| 美腿丝袜亚洲色图| 亚洲影视在线播放| 中文字幕亚洲一区二区va在线| 日韩一区二区三区免费看 | 久久久精品黄色| 欧美一区二区私人影院日本| 在线免费观看日韩欧美| 久久中文欧美| 亚洲一区二区三区免费在线观看| 伊人久久av导航| 牛牛国产精品| 成人免费va视频| 国产精品自拍网站| 免费成人小视频| 手机精品视频在线观看| 亚洲免费观看高清| 亚洲欧洲韩国日本视频| 国产精品入口麻豆原神| 久久久久一区二区三区四区| 日韩欧美美女一区二区三区| 69av一区二区三区| 欧美美女喷水视频| 欧美日韩国产免费一区二区| 久久在线精品| 久久久久久久高潮| 久久国产精品久久久久久电车| 亚洲一区二区动漫| 国产精品视频免费观看| 很黄很黄激情成人| 国产精品草草| 亚洲欧美综合国产精品一区| 成人久久18免费网站麻豆 | 亚洲高清123| 激情一区二区| 欧美日韩 国产精品| 欧美日韩国产不卡在线看| heyzo一本久久综合| 99国产精品久久久久久久久久久 | 91在线丨porny丨国产| 91蜜桃在线免费视频| 色综合天天综合色综合av| 欧美日韩国产一级片| 一本色道久久加勒比精品| 久久久亚洲一区| 欧美性高清videossexo| 欧美日韩一区二区三区在线看| 欧美日韩精品欧美日韩精品一| 在线观看视频一区二区欧美日韩| 色先锋资源久久综合| 欧日韩精品视频| 欧美日韩一级黄| 91精品国产综合久久婷婷香蕉| 日韩一区二区中文字幕| 精品国产欧美一区二区| 久久久另类综合| 国产精品久久久久aaaa樱花|