写了一个程序,功能比较简单,主要是:
用一个JTable组件显示数据库中的数据,采用Access,名称为javadb,存放在本机d根目录
下,数据库中有一个表,名称为javatable,程序代码如下:
/*
 * Created on 2006-6-14
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package cn.hust.ai;import javax.swing.*;
import javax.swing.table.*;
import java.util.Vector;
import java.sql.*;/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class JavaDb extends JFrame{ private JPanel panel;
private DefaultTableModel tablemodel=new DefaultTableModel(1,1);
private JTable table=new JTable(tablemodel);
private Vector vector=new Vector();
private Connection connection;
private Statement statement;
private ResultSet resultset;

public JavaDb(){
db();
settable();
panel=new JPanel();
panel.add(table);
getContentPane().add(panel);
}

public void db(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection=DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\javadb.mdb");
statement=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
resultset=statement.executeQuery("select * from javatable");

}
catch(Exception e){
System.out.println(e);
}
}

public void settable(){
ResultSetMetaData metadata;
int column;
int row;
String string;

try{
resultset.last();
metadata=resultset.getMetaData();
column=metadata.getColumnCount();
for(int i=0;i<column;i++){
string=metadata.getColumnLabel(i);
vector.add(string);
}
tablemodel.setColumnIdentifiers(vector);
tablemodel.setColumnCount(column);
row=resultset.getRow();
tablemodel.setRowCount(row);
resultset.beforeFirst();
row=0;
while(resultset.next()){
for(int j=0;j<column;j++){
string=resultset.getString(j+1);
tablemodel.setValueAt(string,row,j);
}
row++;
}

}
catch(SQLException e){
System.out.println(e);
}
}

public static void main(String[] args) {
JavaDb javadb=new JavaDb();
javadb.setSize(500,300);
javadb.setVisible(true);
}
}问题是:程序运行没有达到预期的功能,即JTable组件中没有显示数据库重的内容。麻烦
大家帮我看一下,谢谢!

解决方案 »

  1.   

    tablemodel.setColumnIdentifiers(vector);
    tablemodel.setColumnCount(column);
    row=resultset.getRow();
    tablemodel.setRowCount(row);
    resultset.beforeFirst();
    row=0;
    while(resultset.next()){
    for(int j=0;j<column;j++){
    string=resultset.getString(j+1);
    tablemodel.setValueAt(string,row,j);
    }
    row++;
    }
    ---------------------------------------
    上面这一大堆,用一句话代替: tablemodel.addRow(vector);
      

  2.   

    class MyTableModel extends DefaultTableModel{
    }定义个方法添加数据,你的数据多少个,就是个几维数组,加入即可