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 中显示数据库中的数据,但它显示以下错误。
Exception in thread "main" java.lang.NullPointerException
at grid.ViewData.(ViewData.java:23)
at grid.ViewData.main(ViewData.java:29)
BUILD STOPPED (total time: 5 seconds)
这个程序有什么错误?
最佳答案
下面的语句调用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();
}
关于来自数据库的 Java 数据显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370334/