当前位置: 代码迷 >> Java相关 >> 程序用JTable列出数据库的数据,百思不得其解
  详细解决方案

程序用JTable列出数据库的数据,百思不得其解

热度:329   发布时间:2006-10-30 15:21:36.0
程序用JTable列出数据库的数据,百思不得其解

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

public class Teldirectory {

public Teldirectory () {
JFrame f=new JFrame();
TelTable tt=new TelTable();
JTable table=new JTable(tt);
table.getPreferredScrollableViewportSize(new Dimension(550,30));
JScrollPane e=new JScrollPane(table);
f.getContentPane().add(s,BorderLayout.CENTER);
f.setTitle("电话簿");
f.pack();
f.setVisible(true);

}
}

class TelTable extends AbstractTableModel{ //tableModel
DataBaseManager db=new DataBaseManager();
ResultSet rs;
ResultSetMetaData rsmd;
String strSql="select * from communication";

try{
rs=db.getResult(strSql);
rsmd=rs.getMetaData();
int dbrow=rsmd.getColumnCount(); //获取列数
int dbcol=0; //获取行数
while(rs.next()){ //不知道用什么方法统计行数
dbcol++;
}
System.out.println("cow:"+dbrow);
System.out.println("col:"+dbcol);
}
catch(SQLException sqle)
{
System.out.println(sqle.toString());
}
catch(Exception ex)
{
System.out.println(ex.toString());
}


String[] name={"ID","姓名","手机","电话","QQ"};
String[][] data=new String[dbrow][dbcol];
rs.first();
try{
int i=1;
while(rs.next()){
for(int j=0;j<name.length;j++)
data[i][j]=rs.getString(j);
i++;
}
}
catch(SQLException sqle)
{
System.out.println(sqle.toString());
}
catch(Exception ex)
{
System.out.println(ex.toString());
}

public int getColumnCount() {
return name.length;
}

public int getRowCount() {
return data.length;
}

public String getColumnName(int col) {
return name[col];
}

public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
}

代码很多错误,我实在想不通是怎么回事,要做的事情是做一个电话本,从数据库提出数据,用表格展示,可是看了书和API,找不到想要的方法,请大家帮忙看看应该怎么修改,麻烦大家帮忙一下~

搜索更多相关的解决方案: 数据库  百思不得其解  JTable  

----------------解决方案--------------------------------------------------------

有高手能帮忙看下程序的错误在那里吗?
只是想做个电话本 就用表格的形式列出信息
ID 姓名 手机 电话 QQ
001 张三 136xxxxx 110 123xxxxx
002 李四 136xxxxx 120 123xxxxx
003 牛一 136xxxxx 119 123xxxxx
003 路人甲 136xxxxx 110 123xxxxx

貌似产生以上的效果。。。。。
数据库是以下 id是主键 数据库中的表名:communication
id name handset tel qq
001 张三 136xxxxx 110 123xxxxx
002 李四 136xxxxx 120 123xxxxx
003 牛一 136xxxxx 119 123xxxxx
003 路人甲 136xxxxx 110 123xxxxx


----------------解决方案--------------------------------------------------------

先把JTable的API看熟吧,JTable是javax.swing包里面比较复杂的一个


----------------解决方案--------------------------------------------------------
应该怎么获得ResultSet结果的行数呢?

----------------解决方案--------------------------------------------------------
rs.next()以后,然后取一个变量递加就可以了
----------------解决方案--------------------------------------------------------
我的程序里面也用了这个,但是错误太多了,我很费解
冰封大哥帮忙仔细看看
----------------解决方案--------------------------------------------------------
我用JC编译的,编译不通过,他是指向try,错误是非法的类型开始


String[] name={"ID","姓名","手机","电话","QQ"}; 这里说需要标识符
String[][] data=new String[dbrow][dbcol];

不应该是这样定义吗?
----------------解决方案--------------------------------------------------------
dbrow][dbcol
你这两个数值都是在try里面定义的,出了try块,它怎么可能访问得到呢
----------------解决方案--------------------------------------------------------

我改改看看,麻烦继续跟踪
是不是全部都在里面得到呢?
这样的话,我在TRY外面的就得不到数据了


----------------解决方案--------------------------------------------------------
变量的作用域你应该很清楚吧
----------------解决方案--------------------------------------------------------
  相关解决方案