2012-02-04 23 views
-1

私はデータベースからデータを取得し、Javaの表に表示しようとしています。以下はコードサンプルです。誰かが私に何か間違ったことを教えてもらえますか?それを実行すると、私は次のエラーが発生します: java.lang.NullPointerException。Javaのデータベースからデータを取得

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

私はあなたが "connect()"と呼ばれている場所を見ません...だから私はそれが理由かもしれないと思います – scartag

+1

conn.prepareStatement(sql); – scartag

答えて

5

試してください:あなたがしようとすると、更新時に

gui.UpdateJTable(); 
gui.conect(); 

gui.conect(); 
gui.UpdateJTable(); 

conn

にはnullです。

6
Connection conn = null; 

あなたは、接続をオープンしたことはありません。

ここでコメントするのはあまりにも多くあります。

http://docs.oracle.com/javase/tutorial/jdbc/basics/

あなたがあまりにも多く、この一つのクラスで起こっている:慎重にこの経て起動します。それは永続性を持っており、すべて一緒に混じって表示されます。私は2つを分けるほうがいいと思う。

ユーザーインターフェイスなしで永続性コードを動作させます。それを徹底的にテストし、それを使用するSwingクラスを作成します。この2行の順序を逆に

+0

+1は強調です。 OPのコードでは厳しいリファクタリングが必要です。 – Perception

関連する問題