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秒)
这个程序有什么错误?
答案 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();
}