2011-07-12 163 views
0

問題出現在行PreparedStatement拋出NullPointerException

PreparedStatement pStmt = conn.prepareStatement("select * from employee where upper(FIRSTNAME) like ? and upper(LASTNAME) like ? " 

我的數據庫存在btw。

public class StubEmployeeRepositoryImpl implements EmployeeRepository { 

    private Connection conn; 
    private DataSource dataSource; 

    // DataSource class encapsulates the driver, database url, username and 
    // password information. The dataSource object is automatically created by 
    // the Spring framework and passed to the constructor therefore there's no 
    // need 
    // to instantiate the dataSource variable. A connection can be acquired by 
    // accessing the getConnection method of dataSource. 
    // 
    // Tip: create member variables in this class that will contain the objects 
    // passed by the Spring framework so that other methods can access the 
    // objects. 

    private static Logger log = Logger 
      .getLogger(StubEmployeeRepositoryImpl.class); 

    public StubEmployeeRepositoryImpl(DataSource dataSource) { 
     this.dataSource = dataSource; 
    } 

    @Override 
    public List<Employee> findEmployeesByName(String firstName, String lastName) { 

     List<Employee> list = new ArrayList<Employee>(); 

     try { 

      Connection myConnection = dataSource.getConnection(); 
      PreparedStatement pStmt = conn 
        .prepareStatement("select * from employee where upper(FIRSTNAME) like ? and upper(LASTNAME) like ? " 
          + "order by ID ASC"); 
      pStmt.setString(1, "%" + firstName.toUpperCase() + "%"); 
      pStmt.setString(2, "%" + lastName.toUpperCase() + "%"); 

      ResultSet rs = pStmt.executeQuery(); 
      while (rs.next()) { 
       list.add(new Employee(rs.getInt("ID"), rs 
         .getString("firstName"), rs.getString("middleInitial"), 
         rs.getString("LastName"), rs.getString("level"), rs 
           .getString("workforce"), rs 
           .getString("enterpriseID"))); 
      } 
      rs.close(); 
      pStmt.close(); 

     } catch (SQLException e) { 

     } 
     return list; 
    } 


    @Override 
    public Employee findEmployeeByID(long employeeID) { 

     Employee result = null; 
     try { 
      Connection myConnection2 = dataSource.getConnection(); 
      PreparedStatement pStmt = conn 
        .prepareStatement("select * from employee where ID = ?"); 
      pStmt.setInt(1, (int) employeeID); 

      ResultSet rs = pStmt.executeQuery(); 
      if (rs.next()) { 
       result = new Employee(rs.getInt("ID"), rs 
         .getString("firstName"), rs.getString("middleInitial"), 
         rs.getString("LastName"), rs.getString("level"), rs 
           .getString("workforce"), rs 
           .getString("enterpriseID")); 

      } 
      rs.close(); 
      pStmt.close(); 
     } catch (SQLException e) { 

     } 
     return result; 
    } 

    @Override 
    public List<Employee> findEmployeesByProject(long projectID) { 

     List<Employee> list = new ArrayList<Employee>(); 
     try { 
      Connection myConnection3 = dataSource.getConnection(); 
      PreparedStatement pStmt = conn.prepareStatement(""); 
      pStmt.setInt(1, (int) projectID); 

      ResultSet rs = pStmt.executeQuery(); 
      while (rs.next()) { 
       list.add(new Employee(rs.getInt("ID"), rs 
         .getString("firstName"), rs.getString("middleInitial"), 
         rs.getString("LastName"), rs.getString("level"), rs 
           .getString("workforce"), rs 
           .getString("enterpriseID"))); 
      } 
      rs.close(); 
      pStmt.close(); 

     } catch (SQLException e) { 

     } 
     return list; 

} 

} 
+0

請在您的問題中引用* exact *例外和伴隨的堆棧跟蹤。 –

回答

7

問題是你永遠不會初始化conn

例如,當你這樣做:

Connection myConnection2 = dataSource.getConnection(); 
PreparedStatement pStmt = conn.prepareStatement("select * from employee where ID = ?"); 

conn仍然是空。也許你的意思是:

Connection myConnection2 = dataSource.getConnection(); 
PreparedStatement pStmt = myConnection2.prepareStatement("select * from employee where ID = ?"); 
+0

哦耶謝謝。 – Rebel

3

很明顯,因爲conn爲空。你必須初始化它。

相關問題