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

發表于:2007-07-14來源:作者:點擊數: 標簽:
Java 數據庫 編程中查詢結果的表格式輸出(2) · 二、 數據庫及其連接方法簡介: 示例采用Sybase數據庫系統,數據庫存放在數據庫 服務器 中。路徑為:D:\WORKER,數據庫名為:worker.dbf。具有以下字段: 字段名 類型 Wno(職工號) VARCHAR Wname(職工名
Java數據庫編程中查詢結果的表格式輸出(2)

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

示例采用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,實際應用中必須給出。此外,有些系統中,文本域中的漢字不一定能正確顯示,需借助其它方法實現。

【參考資料】
1、《Java2從入門到精通》,[美]John Zukowski著,電子工業出版社;
2、《Java2高級開發指南》,電子工業出版社;

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97