写了一个程序,功能比较简单,主要是:
用一个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组件中没有显示数据库重的内容。麻烦
大家帮我看一下,谢谢!
用一个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组件中没有显示数据库重的内容。麻烦
大家帮我看一下,谢谢!
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);
}定义个方法添加数据,你的数据多少个,就是个几维数组,加入即可