中学生作文 语文教案 高考作文 文言文翻译 新课程改革 说课稿 诗歌散文欣赏 中考高考应考对策 语文教学论文之二 语文教学论文之三
语文教学论文之四 小学语文论文 小学语教案文 小学语文试题 小学生园地 文学欣赏 小学教师园地 小学语文课件 语文试题 数学试题
化学试题
物理试题 历史试题 政治试题 英语试题 生物试题 地理试题 其它教案 语文教案 数学教案 化学教案 物理教案
历史教案 政治教案 英语教案 生物教案 地理教案

HomeArticle        > IT培训      

> Java数据库查询结果的输出


  文章内容
 


Java数据库查询结果的输出


 
 

 

摘自:北京海脉信息咨询有限公司

  利用Java开发数据库应用时,经常需要在用户界面上显示查询结果。我们可以利用Vector、JTable、AbstractTableModel等三个类较好地解决这一问题。

类Vector:

  定义如下:

public class Vector extends AbstractList
implements List , Cloneable , Serializable{…}
 
类JTable:

  JTable组件是Swing组件中比较复杂的小件,隶属于javax.swing包,它能以二维表的形式显示数据。类Jtable:

定义如下:

public class JTable extends JComponent
implements TableModelListener,
 Scrollable, TableColumnModelListener,
ListSelectionListener,
 CellEditorListener, Accessible{…}
 
类AbstractTableModel:
  定义如下:
public abstract class AbstractTableModel extends Object
implements TableModel, Serializable{…}
  生成一个具体的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[]={职工号,职工名,
  性别,出生日期,工资};
  //二维表列名
  定制表格。
  实现抽象类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;}//设置单元格不可编辑,为缺省实现
  };
  定制表格:
  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);//给表格加上滚动杠
  显示查询结果。
  连接数据库:已给出。
  数据库查询:
  Statement stmt=connection.createStatement();
  ResultSet rs=stmt.executeQuery
  (select * from worker);
  显示查询结果:
  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时,取出下一行数据显示。显示方法同上。

 

 
State

学科试题测试
教学知识小品
教学心得随笔之一
教育教学论文
教学设计教案
教学心得随笔之二
教学心得随笔之三
工科论文
管理学论文
公共管理论文
经济学论文
法律论文
政治学论文
会计审计论文
艺术论文
其它类论文
证券金融论文
论文指导
财政税收论文
工商管理论文
财务管理论文
计算机论文
医学论文
哲学论文
教育论文
少儿英语
综合英语
考研&MBA
国内考试
企业法律顾问
小语种
出国考试
学习顾问
IT培训
管理培训
商务英语
会计考试
英语考试
司法考试
英语口语
导游员考试
自学考试
公务员考试
报关员考试
CET考试综合信息
CET四级考试
CET六级考试
PETS考试
等级考试综合信息
计算机等级一级考试
计算机等级二级考试
计算机等级三级考试
计算机等级四级考试
全国计算机NIT考试
软考试综合信息
数据库系统工程师
网络管理(程序)员
程序员级
网络设计师
软件设计师(高程)
系统分析师
 


Copyright www.schoolscn.com All rights reserved. ICP备05047758号