最近在学习java swing包里面的JTable类,然后就想把JTable和jdbc结合起来做一个例子,使用JTable显示数据库中的表的内容。经过一番努力,终于成功了,呵呵。主要是获得数据表的记录数和字段数比较麻烦,因为ResultSet里面没有直接的方法,需要使用sql语句:"select count(*) from table"来取得记录数。
下面就是我写的例子,数据库采用Access2000。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.io.*;
public class test
{
public test() throws Exception
{
String[] names;
int i,j,RowNum,ColNum;
Object[][] info;
String sqlstr;
ResultSet res;
JFrame f=new JFrame("利用JTable显示数据库表"); //连接数据库
f.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db1";
Connection connection=DriverManager.getConnection(url,"","");
Statement sta=connection.createStatement();
sqlstr="select count(*) from table1"; //取得数据表的记录数和字段数
res=sta.executeQuery(sqlstr);
res.next();
RowNum=res.getInt(1);
sqlstr="select * from table1";
res=sta.executeQuery(sqlstr);
ResultSetMetaData rsmd=res.getMetaData();
ColNum=rsmd.getColumnCount();
names=new String[ColNum]; //构造JTable
for (i=1;i<=ColNum;i++) names[i-1]=rsmd.getColumnName(i);
info=new Object[RowNum][];
i=0;
while (res.next())
{
info[i]=new Object[ColNum];
for (j=1;j<=ColNum;j++)
{
info[i][j-1]=res.getObject(j);
}
i++;
}
JTable table=new JTable(info,names);
table.setPreferredScrollableViewportSize(new Dimension(400,50));
JScrollPane scrollPane=new JScrollPane(table);
Container cont=f.getContentPane();
cont.add(scrollPane);
f.pack();
f.setLocation(300,300);
f.setResizable(false);
f.setVisible(true);
}
public static void main(String[] args) throws Exception
{
new test();
}
}