Java数据库查询结果的输出

类别:Java 点击:0 评论:0 推荐:

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时,取出下一行数据显示。显示方法同上。

本文地址:http://com.8s8s.com/it/it11779.htm