| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1820 人关注过本帖
标题:怎么把数据库里东西在JTable中显示
只看楼主 加入收藏
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

有什么异常信息?
帖上来看看


可惜不是你,陪我到最后
2006-12-24 19:13
lansite2006
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2006-9-10
收藏
得分:0 

没有异常,就是一片白什么也不显示

2006-12-24 19:20
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 

我写了个比较简单的程序用JTable显示一个指定数据库中指定table的全部数据:代码如下:

程序代码:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.sql.rowset.*;

/**
*用JTable来显示数据库中的数据
*@author Eastsun
*@version 0.1
*/

public class ShowDataBase{
public static void main(String[] args)throws Throwable{
new DataBaseFrame();
}
}
class DataBaseFrame extends JFrame{
public ResultSet getResultSet()
throws SQLException, IOException{
Properties props = new Properties();
FileInputStream in = new FileInputStream(\"database.properties\"); //注意:数据库的属性都保存在database.properties文件中
props.load(in);
in.close();

String drivers = props.getProperty(\"jdbc.drivers\");
if (drivers != null) System.setProperty(\"jdbc.drivers\", drivers);
String url = props.getProperty(\"jdbc.url\");
String username = props.getProperty(\"jdbc.username\");
String password = props.getProperty(\"jdbc.password\");

Connection conn = DriverManager.getConnection(url, username, password);
String table =props.getProperty(\"jdbc.table\");
Statement stat =conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_READ_ONLY );
ResultSet result =stat.executeQuery(\"SELECT * FROM \"+table);
return result;
}

public DataBaseFrame()throws Throwable{
super(\"ShowDataBase\");
ResultSet rs =getResultSet();
ResultSetTableModel model =new ResultSetTableModel(rs);
JTable table = new JTable(model);
add(table);
setSize(600,400);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
}
//下面这个类是代码的关键
class ResultSetTableModel extends AbstractTableModel{
public ResultSetTableModel(ResultSet aResultSet){
rs = aResultSet;
try{
rsmd = rs.getMetaData();
}
catch(SQLException e){
e.printStackTrace();
}
}

public String getColumnName(int c){
try{
return rsmd.getColumnName(c + 1);
}
catch (SQLException e){
e.printStackTrace();
return \"\";
}
}

public int getColumnCount(){
try{
return rsmd.getColumnCount();
}
catch (SQLException e){
e.printStackTrace();
return 0;
}
}

public Object getValueAt(int r, int c){
try{
rs.absolute(r + 1);
return rs.getObject(c + 1);
}
catch(SQLException e){
e.printStackTrace();
return null;
}
}

public int getRowCount(){
try{
rs.last();
return rs.getRow();
}
catch(SQLException e){
e.printStackTrace();
return 0;
}
}

private ResultSet rs;
private ResultSetMetaData rsmd;
}


其中database.properties文件的格式如下,保存在与代码相同的文件夹下
注意,我用的是Derby DB,和楼主的不一样,要把jdbc.drivers与jdbc.url改为适当的形式.
jdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver
jdbc.url=jdbc:derby:F:/Java/JavaDB/myDB
jdbc.username=eastsun
jdbc.password=eastsun
jdbc.table=myTable

[此贴子已经被作者于2006-12-24 20:30:20编辑过]


My BlogClick Me
2006-12-24 19:30
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
另外,我的代码中没有关闭Connection,这一点lz可以自行改正.

My BlogClick Me
2006-12-24 20:32
快速回复:怎么把数据库里东西在JTable中显示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023358 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved