数据库中的Java数据显示?

时间:2015-10-27 14:13:53

标签: java database swing jtable derby

package grid;

import java.awt.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import java.lang.String;

public class ViewData extends JFrame{
   JTable table;
   String rowData[][]=new String[100][100];
    String columnNames[]=new String[3] ;
     static ViewData r;
    public  ViewData() throws ClassNotFoundException, SQLException{
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);    

        columnNames[0] ="Name";
        columnNames[1] ="Regno";
        columnNames[2] ="Email";

        r.load();
        table=new JTable(rowData, columnNames);
        add(new JScrollPane(table));
        pack();
    }
   public static void main(String[] args) throws ClassNotFoundException, SQLException {
        r=new ViewData();
    }

     public void load() throws ClassNotFoundException, SQLException{
            Class.forName("org.apache.derby.jdbc.ClientDriver");
            Connection con=DriverManager.getConnection("jdbc:derby://localhost:1527/swap_db","swap","swap");
            String q="SELECT * FROM STUDENT";
            Statement stm=con.createStatement();
            ResultSet rs=stm.executeQuery(q);
            int i=0;
            while(rs.next()){
                String name=rs.getString(1);
                String regno=rs.getString(2);
                String email=rs.getString(3);

                rowData[i][0]=name;
                rowData[i][1]=regno;
                rowData[i][2]=email;
                i++;

            }        
        }
}

我正在尝试在JTable中显示数据库中的数据,但它显示以下错误。

  

线程“main”中的异常java.lang.NullPointerException
    at grid.ViewData。(ViewData.java:23)
    at grid.ViewData.main(ViewData.java:29)
  BUILD STOPPED(总时间:5秒)

这个程序有什么错误?

1 个答案:

答案 0 :(得分:3)

以下语句调用ViewData的构造函数;

r=new ViewData();

但是在构造函数中,你调用了:

r.load();

在构造函数返回之前,r为null,这就是它抛出NullPointerException的原因。

所以可以做的是在创建实例后将r.load()从构造函数移动到main方法。

public static void main(String[] args) throws ClassNotFoundException, SQLException {
    r=new ViewData();
    r.load();
}
相关问题