一个简单的问题,用JTable显示数据库中的记录,帮小弟调整一下这个程序

shixianpeng 2003-09-13 01:45:00
小第最近学习Java,参考了一些资料,没有看到完整的用JTable显示数据库中记录的情况,
小弟只需要用JTable显示数据库的记录就可以,
一下是我写的一些代码,请求各位大虾指点:
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class ResultSetTable
{ public static void main(String[] args)
{ JFrame frame = new ResultSetFrame();
frame.show();
}
}

class ResultSetFrame extends JFrame
{ public ResultSetFrame()
{ setTitle("ResultSet");
setSize(300, 200);

try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:phdbms";
String user = "sa";
String password = "";

v1 = new Vector();
v2 = new Vector();

rsmd = rs.getMetaData();

con = DriverManager.getConnection(url, user,password);
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM superAdmin");

for(int i=0;i<rsmd.getColumnCount();i++)
{
v1.addElement(rsmd.getColumnName(i)); //得到列名
v2.addElement(rs.getString(i)); //得到数据库中的数据
}

Container contentPane = getContentPane();
JTable table = new JTable(v1,v2);
scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, "Center");
rs.close();
}
catch(Exception e)
{
System.out.println("Errror " + e);
}
}

private JScrollPane scrollPane;
private ResultSet rs;
private Connection con;
private Statement stmt;
private ResultSetMetaData rsmd;
private Vector v1;
private Vector v2;
}

编译无任何错误,但不显示任何内容?
谢谢!
...全文
65 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun2927 2003-09-14
  • 打赏
  • 举报
回复
再给你up
shixianpeng 2003-09-14
  • 打赏
  • 举报
回复
谢谢 joy_wind(wind) 的指点,由于单位需要急用,
没办法,只有硬着头皮做下来:
这个问题已经折腾了我一个多礼拜,
现在又找了一些资料,终于实现了以上的功能.
Java是一门不错的语言,我会好好去学她的.

joy_wind 2003-09-14
  • 打赏
  • 举报
回复
代码里有逻辑错误,再检查!

你需要认真看一本关于java语法的书,thinking in java(英文版)是个不错的选择。
shixianpeng 2003-09-13
  • 打赏
  • 举报
回复
小弟急呀!
能帮一下忙吗?
分不是问题
sun2927 2003-09-13
  • 打赏
  • 举报
回复
up
关注
shixianpeng 2003-09-13
  • 打赏
  • 举报
回复
to joy_wind(wind)

小弟改成如下,能显示了,但全都在一行显示,不能换行?
Vector rows = new Vector();
Vector columns = new Vector();
while (rs.next())
{
for(int i=1;i<=colCount;++i)
{
rows.addElement(rs.getString(i));
}
}
JTable table = new JTable(columns,rows);
Container contentPane = getContentPane();
scrollPane = new JScrollPane(table);
getContentPane().setLayout(new BorderLayout());
contentPane.add(scrollPane,"Center");
shixianpeng 2003-09-13
  • 打赏
  • 举报
回复
to joy_wind(wind)

小弟改成如下,能显示了,但全都在一行显示,不能换行?
Vector rows = new Vector();
Vector columns = new Vector();
while (rs.next())
{
for(int i=1;i<=colCount;++i)
{
rows.addElement(rs.getString(i));
}
JTable table = new JTable(columns,rows);
Container contentPane = getContentPane();
scrollPane = new JScrollPane(table);
getContentPane().setLayout(new BorderLayout());
contentPane.add(scrollPane,"Center");
}
joy_wind 2003-09-13
  • 打赏
  • 举报
回复
在加上下面这句试试
getContentPane().setLayout(new BorderLayout())

另外,这部分有错误

while (rs.next())
{
Vector rows = new Vector();
....

=========

rows应该在while循环外面定义。table等变量定义也应该放在while循环外面
shixianpeng 2003-09-13
  • 打赏
  • 举报
回复
我把代码改成如下,但只显示一行记录,请问如何解决:
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class ResultSetTable
{ public static void main(String[] args)
{ JFrame frame = new ResultSetFrame();
frame.show();
}
}

class ResultSetFrame extends JFrame
{ public ResultSetFrame()
{ setTitle("ResultSet");
setSize(300, 200);

try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:phdbms";
String user = "sa";
String password = "";

con = DriverManager.getConnection(url, user,password);
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM superAdmin");
rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();

while (rs.next())
{
Vector rows = new Vector();
Vector columns = new Vector();

for(int i=1;i<=colCount;++i)
{
rows.addElement(rs.getString(i));
}

JTable table = new JTable(columns,rows);
Container contentPane = getContentPane();
scrollPane = new JScrollPane(table);
contentPane.add(scrollPane,"Center");
}
rs.close();
}
catch(Exception e)
{
System.out.println("Errror " + e);
}
}

private JScrollPane scrollPane;
private ResultSet rs;
private Connection con;
private Statement stmt;
private ResultSetMetaData rsmd;
}
joy_wind 2003-09-13
  • 打赏
  • 举报
回复
代码有问题

1,rs变量没有定义

2,rs变量没有移动指针(rs.next())
shixianpeng 2003-09-13
  • 打赏
  • 举报
回复
怎么没人回复呀?
是不是问题太简单了?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧