當前位置:菜譜大全網 - 菜譜 - 如何用java在表格中顯示查詢結果

如何用java在表格中顯示查詢結果

用Java開發數據庫應用系統時,經常需要在用戶界面上顯示查詢結果。由於SUN公司提供的JDK1.x開發包不是可視化集成開發環境(IDE),無法像Delphi和VB那樣方便地在DBGrid等表格中顯示查詢結果。所以只能通過自己寫代碼來實現。

在實際應用中,我們可以使用Vector、JTable和AbstractTableModel來解決這個問題。下面,詳細介紹壹下實現方法。

壹、類Vector、類JTable、類AbstractTableModel介紹:

1,類別向量:

Class Vector是Java的歷史集合類,屬於java.util包。它包裝了異構鏈表和數組混合,具有以下兩個特點:

*矢量是異構的,不要求每個元素都有相同的類型,可以在矢量中混合各種對象類型;

* Vector是數組的混合體,因為它們可以在添加元素時動態增加。

其異構性與數據庫記錄中不同屬性類型的特征相吻合,其動態性與數據庫查詢中結果集記錄數量不確定的特征相吻合。

類別向量定義如下:

公共類向量擴展抽象列表

實現列表,可克隆,可序列化

實現了向量成員的查找、添加和刪除方法。比如add(Object obj)可以輕松添加壹個對象;Get(int index)可以輕松獲取vector中的壹個對象;移除(對象對象).可以方便地刪除向量中對象。

2.JTable類:

JTable組件是Swing組件中比較復雜的小部件,屬於javax.swing包,可以以二維表格的形式顯示數據。JTable類定義如下:

公共類JTable擴展了JComponent

實現TableModelListener、Scrollable、TableColumnModelListener、

ListSelectionListener,CellEditorListener,可訪問{…}

JTable類在顯示數據時具有以下特征:

可定制性:可以定制數據的顯示方式和編輯狀態;

*異構性:可以顯示不同類型的數據對象,甚至包括顏色、圖標等復雜對象;

*簡單性:默認情況下,您可以輕松設置壹個二維表。

其定制性可以滿足不同用戶和場合的需求,其異構性也與數據庫訪問結果集中不同屬性類型的特點不謀而合。JTable類提供了極其豐富的二維表格操作方法,比如設置編譯。

系列的狀態、顯示模式、等級的選擇等。,這裏就不詳述了。

在使用JTable類顯示數據之前,必須根據情況生成自定義模型、單元畫圖器或單元編輯器。類AbstractListModel用於定制用戶自己的數據模型,後面會介紹。

TableCellRenderer接口用於自定義單元渲染器,TableCellEditor接口用於自定義單元編輯器。這兩個接口主要用於處理顏色對象,示例中沒有用到,不做過多解釋。

3.類AbstractTableModel:

Class AbstractTableModel是壹個抽象類,沒有完全實現,不能實例化。當使用它時,方法必須在程序中實現。它屬於javax.swing.table類定義如下:

公共抽象類AbstractTableModel擴展對象

實現TableModel,Serializable{…}

AbstractTableModel類提供了TableModel接口中大多數方法的默認實現。TableModel接口定義了JTable的基本數據結構。用戶想要生成他們自己的數據模型,這本來是可以的

TableModel接口中的所有方法都是為了滿足需求而實現的,但是管理受眾表的功能是所有數據模型共有的,所以在javax.swing.table中定義了AbstractTableModel類

處理好這份工作。它不僅管理觀眾表,還幫助生成TableModelEvents事件並將它們委托給觀眾。

要生成具體的TableMode作為AbstractTableMode的子類,至少必須實現以下三個方法:

public int getRowCount();

public int getColumnCount();

公共對象getValueAt(int row,int column);

此時,我們可以構建壹個簡單的二維表格(5×5),實現方法如下:

table model data model = 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(data model);

JScrollPane scroll pane = new JScrollPane(table);

二、數據庫及其連接方法:

本例采用Sybase數據庫系統,數據庫存儲在數據庫服務器中。路徑為:D:/WORKER,數據庫名稱為:worker.dbf具有以下字段:

字段名

類型

員工編號

可變長字符串

Wname(員工姓名)

可變長字符串

性(性別)

可變長字符串

出生(出生日期)

日期

工資

漂浮物

要連接到這個數據庫,您需要使用java.sql包中的類DriverManager。這個類是用於管理JDBC驅動程序的實用程序類。它提供了通過驅動程序獲得連接、註冊、取消驅動程序、設置註冊和數據庫訪問超時等方法。具體連接方法如下:

步驟1:定位、加載並鏈接SybDriver類;

driver = " com . Sybase . JDBC . syb driver ";

syb driver syb driver =(syb driver)class . for name(driver)。new instance();

第二步:註冊SybDriver類;

driver manager . register driver(syb driver);

步驟3:獲取SybConnection對象引用。

user = " sa

密碼= " ";

URL = " JDBC:Sybase:Tds:202.117 . 203 . 114:5000/WORKER ";

syb connection connection =(syb connection)driver manager . get connection

(網址、用戶、密碼);

連接建立後,可以通過語句接口查詢和更改數據庫。

三、實施方法:

限於篇幅,這裏只給出核心代碼,包介紹、接口處理、變量定義等部分不做介紹。

第壹步:對象聲明。

AbstractTableModel tm//聲明壹個AbstractTableModel對象。

JTable jg _ table//聲明壹個類似JTable的對象

向量vect//聲明vector對象

JScrollPane jsp//聲明壹個滾動條對象

String title[]={“員工編號”、“員工姓名”、“性別”、“出生日期”、“工資”};

//二維表格列名

第2步:自定義表單。

1.在AbstractTableModel對象tm中實現方法:

vect =新向量();//實例化向量

tm=new AbstractTableModel(){

public int getColumnCount(){

返回title.length}//獲取表格中的行數

public int getRowCount(){

返回vect . size();}//獲取表格中的行數

公共對象getValueAt(int row,int column){

如果(!vect.isEmpty())

返回

((Vector)vect.elementAt(row))。elementAt(列);

其他

返回null}//獲取單元格中的屬性值

公共字符串getColumnName(int column){

返回標題[列];}//設置表格列名

public void setvalue at(Object value,int row,int column){}

//數據模型無法編輯,此方法設置為null。

公共類getColumnClass(int c){

返回getValueAt(0,c)。getClass();

}//獲取該列所屬的對象類。

public boolean is celled table(int row,int column){

返回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.數據庫查詢:

語句stmt = connection . create statement();

ResultSet RS = stmt . execute query(" select * from worker ");

3.顯示查詢結果:

vect . remove allements();//初始化vector對象

TM . firetablestructurechanged();//更新表格內容

while(rs.next()){

向量rec _ Vector = new Vector();

//從結果集中取出數據,放入向量rec_vector。

rec _ vector . add element(RS . getstring(1));

rec _ vector . add element(RS . getstring(2));

rec _ vector . add element(RS . getstring(3));

rec _ vector . add element(RS . getdate(4));

rec _ vector . add element(new Float(RS . get Float(5)));

vect . add element(rec _ vector);//矢量rec_vector加到vector上。

}

TM . firetablestructurechanged();//更新表格以顯示vector vector的內容。