2014-02-16 51 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

相关问题