教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> 编程基地 >> JAVA >> Java数据库编程中查询结果的表格式输出(2) RSS订阅
Java数据库编程中查询结果的表格式输出(2)
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
   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高级开发指南》,电子工业出版社; 

来源:编程技术-十度教育
作者:
关键字:表格式输出
发表日期:2006-10-18 13:43:07

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:在Applet中应用JDBC访问数据库   下一篇:Java数据库编程中查询结果的表格式输出(1)


2008-10-8 7:25:23
本文的相类似文章
  • Java数据库编程中查询结果的表格式输出(1)
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com