dao层上的空指针异常

时间:2012-07-07 08:51:47

标签: java jdbc nullpointerexception dao

我开发了以下程序,但它抛出空指针异常。

以下是模型类..

public class Circle {

    private int Id;
    public Circle(int id, String name) {
        super();
        Id = id;
        this.name = name;
    }
    private String name;
    public int getId() {
        return Id;
    }
    public void setId(int id) {
        Id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

以下是dao类..

public class jdbcdaoimpl {
    public Circle getCircle(int circleId) 
        {   
        Circle circle = null;

        try
        {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","saral","saral");
        PreparedStatement stmt=con.prepareStatement("select * from CIRCLE where id = ?");
        stmt.setInt(1,circleId);
        ResultSet rset=stmt.executeQuery();
        while(rset.next())
        {
             circle= new Circle(circleId, rset.getString("name") );
        }       
        rset.close();
        stmt.close();
        con.close();
        }                   
        catch (Exception e)
        {
            e.printStackTrace();            
        }
        return circle;
    }
}

最后是主班......

public class jdbcDemo {

    public static void main(String[] args) {
        Circle c = new jdbcdaoimpl().getCircle(1);
        System.out.println(c.getName());
    }

}

请告知主要类的执行它抛出空指针异常。

1 个答案:

答案 0 :(得分:2)

您正在吞下DAO方法中的所有异常。它返回null。如果查询只返回空结果,它也将返回null

您还无法在close finally public class JdbcDaoImpl { public Circle getCircle(int circleId) { Connection con = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe","saral","saral"); final PreparedStatement stmt = con.prepareStatement( "select * from CIRCLE where id = ?"); stmt.setInt(1,circleId); final ResultSet rset = stmt.executeQuery(); if (rset.next()) return new Circle(circleId, rset.getString("name") ); throw new RuntimeException("Result set is empty"); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } finally { try { if (con != null) con.close(); } catch (Throwable t) {} } } } 资源。您必须传播您的例外情况,而不是在没有处理的情况下捕获它们。

{{1}}