我正在尝试从数据库中检索数据,然后在java中的表上显示。下面是代码示例,有人可以告诉我什么是错的,因为当运行它我得到以下错误: 显示java.lang.NullPointerException。
package sample;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import net.proteanit.sql.DbUtils;
public class Table extends JFrame{
JTable table;
Connection conn = null;
ResultSet rs = null;
PreparedStatement pst = null;
private void UpdateJTable(){
String sql = "select firstname, status from tblmember";
try{
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
table.setModel(DbUtils.resultSetToTableModel(rs));
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
private void conect(){
conn = myconnection.ConnectDb();
}
public Table(){
setLayout(new FlowLayout());
String [] columnName={"Name", "Status"};
Object [][] data={
{null, null},
{null, null}
};
table = new JTable(data, columnName);
table.setPreferredScrollableViewportSize(new Dimension(500,50));
table.setFillsViewportHeight(true);
JScrollPane sp = new JScrollPane(table);
add(sp);
}
public static void main(String[] args){
Table gui = new Table();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(700, 500);
gui.setVisible(true);
gui.setTitle("AAAAAAAA");
gui.UpdateJTable();
gui.conect();
}
}
答案 0 :(得分:6)
Connection conn = null;
您从未打开过连接。
这里评论的内容太多了。首先仔细阅读:
http://docs.oracle.com/javase/tutorial/jdbc/basics/
你在这一节课中有太多的进展。它有持久性并且显示所有混合在一起。我认为将两者分开会更好。
在没有用户界面的情况下获取持久性代码。彻底测试,然后创建一个Swing类来使用它。
答案 1 :(得分:5)
尝试颠倒这两行的顺序:
gui.UpdateJTable();
gui.conect();
到
gui.conect();
gui.UpdateJTable();
当您尝试更新时, conn
为空。