Java 如何从JTable中的数据库获取数据?
我试图在Java 如何从JTable中的数据库获取数据?,java,swing,jtable,actionlistener,Java,Swing,Jtable,Actionlistener,我试图在JTable中显示数据库中的数据 这是我的主类的ActionListener的一部分 if(e.getSource()==jjb) { String j[] = null; Vector r = new Vector(); Vector finl = new Vector(); try { d10.connection(); int b = d10.getclmncnt(); for(int g =
JTable
中显示数据库中的数据
这是我的主类的ActionListener
的一部分
if(e.getSource()==jjb)
{
String j[] = null;
Vector r = new Vector();
Vector finl = new Vector();
try
{
d10.connection();
int b = d10.getclmncnt();
for(int g = 1; g<=b+1;g++)
{
j = new String[g];
}
for(int g = 1; g<=b;g++)
{
j[g] = d10.gettableclmn(g);
}
Vector v = new Vector();
for(int g = 1; g<=b;g++)
{
v.addElement(j[g]);
}
int a = d10.getrwcnt();
System.out.println("no of rows are :::: "+a);
r = d10.getalldata(b);
JTable t = new JTable(r,v);
t.setLayout(null);
TableColumn tc;
for(int hh = 0;hh<t.getColumnCount();hh++)
{
tc = t.getColumnModel().getColumn(hh);
tc.setWidth(75);
}
JScrollPane js = new JScrollPane(t);
js.setBounds(10, 100, 1000, 500);
p5.add(js);
p5.repaint();
}
catch (ClassNotFoundException e1)
{
e1.printStackTrace();
}
catch (SQLException e1)
{
e1.printStackTrace();
}
}
当我运行此代码时,只有第一个结果显示在
JTable
中,但是当我调用函数d10.getrwcnt()时代码>它将输出为79
行。我的代码有什么问题?您的问题是getalldata
方法的循环
Vector v = new Vector(d);
try {
Statement s = c.createStatement();
ResultSet r = s.executeQuery("select * from data");
while(r.next())
//Every time when this loop gets executed you are adding
//data to the same vector v, instead one instance depicts one row in database,
//so you will have to create a new instance everytime.
{
v = new Vector(d); //create an instance for every row in database.
v.add(r.getInt(1));
v.add(r.getInt(2));
v.add(r.getInt(3));
v.add(r.getInt(4));
v.add(r.getInt(5));
v.add(r.getInt(6));
v.add(r.getInt(7));
v.add(r.getInt(8));
v.add(r.getInt(9));
v.add(r.getInt(10));
v.add(r.getInt(11));
v.add(r.getString(12));
rr.add(v); // add the values here
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
您的问题是getalldata
方法的循环
Vector v = new Vector(d);
try {
Statement s = c.createStatement();
ResultSet r = s.executeQuery("select * from data");
while(r.next())
//Every time when this loop gets executed you are adding
//data to the same vector v, instead one instance depicts one row in database,
//so you will have to create a new instance everytime.
{
v = new Vector(d); //create an instance for every row in database.
v.add(r.getInt(1));
v.add(r.getInt(2));
v.add(r.getInt(3));
v.add(r.getInt(4));
v.add(r.getInt(5));
v.add(r.getInt(6));
v.add(r.getInt(7));
v.add(r.getInt(8));
v.add(r.getInt(9));
v.add(r.getInt(10));
v.add(r.getInt(11));
v.add(r.getString(12));
rr.add(v); // add the values here
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
移动第一行和最后一行
Vector v = new Vector(d);
....
while(r.next()) {
v.add(r.getInt(1));
v.add(r.getInt(2));
...
v.add(r.getString(12));
}
rr.add(v);
在循环内部,如下所示
while(r.next()) {
Vector v = new Vector(d);
v.add(r.getInt(1));
v.add(r.getInt(2));
...
v.add(r.getString(12));
rr.add(v);
}
而且,我可以看出你的代码很模糊,请不要介意。你能做的事情很少
- 适当地处理连接,尝试使用一些连接池API
- 使用后关闭您的
结果集
- 停止使用
Vector
,改用ArrayList
,尤其是当Vector没有任何用途时
- 尝试遵守Java命名约定
- 使用有意义的变量,而不是
b
、g
、j
等
移动第一行和最后一行
Vector v = new Vector(d);
....
while(r.next()) {
v.add(r.getInt(1));
v.add(r.getInt(2));
...
v.add(r.getString(12));
}
rr.add(v);
在循环内部,如下所示
while(r.next()) {
Vector v = new Vector(d);
v.add(r.getInt(1));
v.add(r.getInt(2));
...
v.add(r.getString(12));
rr.add(v);
}
而且,我可以看出你的代码很模糊,请不要介意。你能做的事情很少
- 适当地处理连接,尝试使用一些连接池API
- 使用后关闭您的
结果集
- 停止使用
Vector
,改用ArrayList
,尤其是当Vector没有任何用途时
- 尝试遵守Java命名约定
- 使用有意义的变量,而不是
b
、g
、j
等
只搜索点,因为您没有搜索以下内容
- 向量的工作原理
- JTable的工作原理
- LayoutManager的工作原理
- 阅读相关问题(右下角)
- 不要重新发明轮子,搜索ResultSetTableModel或TableFromDatabase
- 您对Swing中的一致性有异议
只搜索点,因为您没有搜索以下内容
- 向量的工作原理
- JTable的工作原理
- LayoutManager的工作原理
- 阅读相关问题(右下角)
- 不要重新发明轮子,搜索ResultSetTableModel或TableFromDatabase
- 您对Swing中的一致性有异议
能否将硬编码数据动态放入表中?您能否成功列出数据库的输出(例如到命令行)?这似乎是两个不同的问题。另一方面,为了更快地获得更好的帮助,请发布一个。您可以动态地将硬编码数据放入表中吗?您能否成功列出数据库的输出(例如到命令行)?这似乎是两个不同的问题。顺便说一句,为了尽快得到更好的帮助,请发一封邮件。我尝试了你的建议。但它仍然不能正常工作。。。。以前,JTable中只添加了第1行。现在,重复同一行,直到行数被占用。我尝试了您建议的方法。但它仍然不能正常工作。。。。以前,JTable中只添加了第1行。现在同一行重复,直到行数被占用。看我的答案看我的答案