郁闷!一个读数据库到jtable的试验程序通不过,请各位帮忙!!!!!!(50分)

  • 主题发起人 主题发起人 maomaoyu810201
  • 开始时间 开始时间
M

maomaoyu810201

Unregistered / Unconfirmed
GUEST, unregistred user!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class TestJtable extends JFrame implements ActionListener{
JTable table;
JButton button1,button2;
JLabel label;
JPanel panel,panel2;
JScrollPane scrollpane;

Statement stmt;
Connection conn;
ResultSet rs;
Object [][] data;
String [] name;
int j=0;

public TestJtable()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:MS Access Database","","");
stmt=conn.createStatement();
String sql="select * from userinfo";
rs = stmt.executeQuery(sql);
}
catch (Exception ex) { System.err.println(ex.getMessage());}

try{
while (rs.next()){
for(int i=1;i<=rs.getMetaData().getColumnCount();i++)
{
data[j]=rs.getObject(i);

}
j++;
}//读取数据

for(int i=1;i<=rs.getMetaData().getColumnCount();i++)
{ name=rs.getMetaData().getColumnName(i);}
//读取字段名
}
catch(Exception ex){System.err.println(ex.getMessage());}
Container con=this.getContentPane();

label=new JLabel("Wellcome");
button1=new JButton("Find");
button2=new JButton("Exit");
panel=new JPanel();
panel2=new JPanel();
table=new JTable(data,name);
scrollpane=new JScrollPane(table);
button2.addActionListener(this);
panel.setLayout(new FlowLayout());
panel.add(button1);
panel.add(button2);
panel2.add(label,BorderLayout.CENTER);
con.add(panel2,BorderLayout.NORTH);
con.add(new JPanel(),BorderLayout.WEST);
con.add(new JPanel(),BorderLayout.EAST);
con.add(scrollpane,BorderLayout.CENTER);
con.add(panel,BorderLayout.SOUTH);

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

}

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button2)
{System.exit(0);}
}
public static void main(String []args)
{
TestJtable frm=new TestJtable();
frm.pack();
frm.show();

}
}
数据库连接没问题,编译能过,但运行时出现错误提示:
null
Exception in thread "main" java.lang.NullPointerException
at javax.swing.JTable$1.getColumnCount(JTable.java:423)
at javax.swing.JTable.createDefaultColumnsFromModel(JTable.java:936)
at javax.swing.JTable.tableChanged(JTable.java:2853)
at javax.swing.JTable.setModel(JTable.java:2721)
at javax.swing.JTable.<init>(JTable.java:368)
at javax.swing.JTable.<init>(JTable.java:308)
at javax.swing.JTable.<init>(JTable.java:420)
at TestJtable.<init>(TestJtable.java:53)
at TestJtable.main(TestJtable.java:83)
 
建议做一个TableModel,使用其中定义的方法才好,
具体再说,没能上传,
 
你连接的是access数据库吧。
我认为错误出在这一句:
conn=DriverManager.getConnection("jdbc:odbc:MS Access Database","","");
出错原因怀疑为数据源没有设置好。
你如果用了access数据库,凭我的经验,应该需要设置odbc数据源。不知道你设置了没有?还有,上面这一句代码,其中“MS Access Database”应该是数据源的名字。而且,数据源必须设置为“系统DSN”才可以。你的数据源的名字也太特别了点,像是驱动程序的名字,建议修改一下(不知道是不是名字中包含空格的问题,但修改一下总没坏处,上面一句直接写成:
conn=DriverManager.getConnection("jdbc:odbc:数据源名称","","");
应该是对的。
 
后退
顶部