2014-02-16 47 views
0

我只是想在eclipse上運行一個問題Java程序,但得到NullPointerException。我的代碼發佈在下面。請告訴我我做錯了什麼。異常在從數據庫中獲取值時線程main java.lang.NullPointerException

Rect.java

package org.spring.model; 

public class Rect { 

    private int id; 
    private String name; 

    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

    public Rect(int rectId, String rectName) 
    { 
     setId(rectId); 
     setName(rectName); 
    } 


} 

JdbcDaoImplement.java

package org.spring.dao; 

    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet; 
    import java.sql.SQLException; 

    import org.spring.model.Rect; 

public class JdbcDaoImplement { 

    public Rect getRect(int rectId) 
    { 
     Connection conn=null; 

     try 
     { 
      Class.forName("oracle.jdbc.OracleDriver"); 
      String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL"; 
      conn = DriverManager.getConnection(jdbcUrl, "system", "abcd"); 
      PreparedStatement ps=conn.prepareStatement("SELECT * FROM RECTANGLE WHERE id=?"); 
      ps.setInt(1, rectId); 

      Rect rect=null; 
      ResultSet rs=ps.executeQuery(); 
      if(rs.next()==true) 
      { 
       rect=new Rect(rectId,rs.getString("name")); 
      } 
      rs.close(); 
      ps.close(); 
      return rect; 
     } 
     catch(Exception e) 
     { 
      throw new RuntimeException(); 
     } 
     finally 
     { 
      try { 
       conn.close(); 
      } catch (SQLException e) { 
       //e.printStackTrace(); 

      } 
     } 
    } 

} 

最後,JdbcDemo.java

package org.spring; 

import org.spring.dao.JdbcDaoImplement; 
import org.spring.model.Rect; 

public class JdbcDemo { 

    public static void main(String[] args) { 
     Rect rect=new JdbcDaoImplement().getRect(1); 
     System.out.println(rect.getName()); 
    } 

} 

而且堆棧跟蹤是:

Exception in thread "main" java.lang.NullPointerException 
    at org.spring.JdbcDemo.main(JdbcDemo.java:10) 
+1

如果您要告訴我們一個異常,請給出完整的堆棧跟蹤。 –

+0

好吧,我編輯並重新發布了完整的堆棧跟蹤問題。 – Poles

回答

1

很可能在你的主要方法rect爲空,而你叫rect.getName(),那麼邦! NPE。

因爲在你getRect(int rectId)方法,你的方法來處理異常,然後返回一個rect,如果有什麼腳麻或rs.next()是假的,你會返回一個空rect對象。你可以考慮做的是,重新設計getRect()方法,讓它永遠不會返回null,例如,如果沒有找到記錄,或發生異常,拋出異常;或者在你的主要方法中,檢查rect,確保它不爲空。

+0

好的我改變了代碼並重新編輯了問題......但仍然有相同的錯誤。 – Poles

+1

你調試過你的代碼嗎?例如rs.next()返回true或false?先嚐試調試! – Kent

+0

Atlast它的工作......非常感謝! – Poles

相關問題