JAVA连接数据库用表格显示数据库中内容的问题

我写了一段JAVA程序,连接数据库,想把数据库中的数据以表格的形式显示,以下是我的代码,但是为什么表格中显示的全是数据中第一行中的数据啊?为什么while循环中的条件rs... 我写了一段JAVA程序,连接数据库,想把数据库中的数据以表格的形式显示,以下是我的代码,但是为什么表格中显示的全是数据中第一行中的数据啊?为什么while循环中的条件rs.next()在下次循环时不指向数据库中下一行数据啊?我的数据库中不只一条数据。数据库中有五条不同的数据,但是执行程序后,表格中有五条数据,全都是数据库中第一行的数据。
请高手指点!最好详细点,谢谢!
import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.io.*;
import java.util.Vector;
public class myTable
{
public myTable()
{
JFrame f=new JFrame();
JTable t=new JTable();
DefaultTableModel dt=new DefaultTableModel();
t.setModel(dt);
//以下是连接数据库
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:db1","","");

Statement sta = con.createStatement();
ResultSet rs=sta.executeQuery("select * from goods");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns=rsmd.getColumnCount();
int b=1;
//以下是显示数据库中的列名的代码
while(b<=numberOfColumns)
{

dt.addColumn(rsmd.getColumnName(b));

b++;
}
//以下是在表格中显示数据中的内容
Vector newRow=new Vector();
while(rs.next())
{
int c=1;
while(c<=numberOfColumns)
{
newRow.addElement(rs.getString(c));
c++;
}
dt.addRow(newRow);

}

}
catch(Exception e)
{
e.printStackTrace();
}

JScrollPane s = new JScrollPane(t);

f.getContentPane().add(s, BorderLayout.CENTER);
f.setTitle("表");
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
};});

}
public static void main(String args[])
{

new myTable();
}
}
展开
 我来答
stevenxu04
推荐于2016-09-19 · TA获得超过207个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:0
展开全部
是不是得把Vector newRow=new Vector()放在循环里面。

while(rs.next())
{
Vector newRow=new Vector();
int c=1;
while(c<=numberOfColumns)
{
newRow.addElement(rs.getString(c));
c++;
}
dt.addRow(newRow);
}

没细看,试一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
glassesbamboo
2008-04-13 · TA获得超过558个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:471万
展开全部
楼上的基本上说对了,不过还要改一下
Vector newRow;
while(rs.next())
{
newRow=new Vector();
int c=1;
while(c<=numberOfColumns)
{
newRow.addElement(rs.getString(c));
c++;
}
dt.addRow(newRow);
}

另外,既然不需要线程安全,使用ArrayList比较好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式