2014-05-02 143 views
-1

我试图以JTable的形式显示表的数据。 我的表在Oracle 10g Express Edition。 T.name:Doctor 我希望整个表格应该在JTable的帮助下以我的形式显示。无法从JTable中的数据库中获取数据?

class PatientTableFromDatabase extends JFrame 
{ 
    static Connection con=null; 
    Statement st=null; 
    ResultSet rs=null; 

    PatientTableFromDatabase() 
    { 
     Vector columnNames = new Vector(); 
     Vector data = new Vector(); 

     try 
     { 
      // Connect to the Database 
      try{ 

       //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       //cn=DriverManager.getConnection("Jdbc:Odbc:pat"); 
       Class.forName("oracle.jdbc.OracleDriver"); 
       Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:xe", "hr", "hr"); 
      } 

      catch(Exception e) 
      { 
       //System.out.println(e); 
       e.printStackTrace(); 
      } 


      // Read data from a table 

      String sql = "Select * from Doctor"; 
      Statement stmt = con.createStatement(); 
      ResultSet rs = stmt.executeQuery(sql); 
      ResultSetMetaData md = rs.getMetaData(); 
      int columns = md.getColumnCount(); 

      // Get column names 

      for (int i = 1; i <= columns; i++) 
      { 
       columnNames.addElement(md.getColumnName(i)); 
      } 

      // Get row data 

      while (rs.next()) 
      { 
       Vector row = new Vector(columns); 

       for (int i = 1; i <= columns; i++) 
       { 
        row.addElement(rs.getObject(i)); 
       } 

       data.addElement(row); 
      } 

     } 
     catch(Exception e) 
     { 
      System.out.println(e); 
      //e.printStackTrace(); 
     } 

     // Create table with database data 

     JTable table = new JTable(data, columnNames); 


     JScrollPane scrollPane = new JScrollPane(table); 
     getContentPane().add(scrollPane); 

      /* JPanel buttonPanel = new JPanel(); 
     getContentPane().add(buttonPanel, BorderLayout.SOUTH);*/ 
    } 


    public static void main(String[] args) 
    { 
     PatientTableFromDatabase frame = new PatientTableFromDatabase(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

当我运行框架出现,但没有数据,没有表。 请帮忙!! 感谢

回答

1

你的SQL查询为空

ResultSet rs = stmt.executeQuery(); 

尝试

ResultSet rs = stmt.executeQuery( sql); 
+0

纠正,但随后也同样的事情,只出现帧,没有桌子,在cmd中显示java.lang.NullPointerException没有data.And戒烟后。 – user3367768

+1

@ user3367768打印堆栈跟踪 – SpringLearner

+0

我得到这个 java.lang.NullPointerException java.lang.NullPointerException at PatientTableFromDatabase。 at PatientTableFromDatabase.main user3367768

0

你有两个变量称为con

第一个是在顶部定义的静态的你类,然后在第21行的try-catch块中再次定义它。

在第34行中,您使用的是未初始化版本的con,因此您将得到NullPointerException。

要解决此问题的代码更改为以下:

... 
try{ 
    //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    //cn=DriverManager.getConnection("Jdbc:Odbc:pat"); 
    Class.forName("oracle.jdbc.OracleDriver"); 
    con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:xe", "hr", "hr"); 
} 
catch(Exception e) { 
    e.printStackTrace(); 
} 
... 
+0

非常感谢,它工作。 – user3367768