在java中从数据库中检索数据

时间:2012-02-04 19:56:55

标签: java mysql

我正在尝试从数据库中检索数据,然后在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();
    }
}

2 个答案:

答案 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为空。