开发者

PreparedStatement throws NullPointerException

开发者 https://www.devze.com 2023-03-20 02:07 出处:网络
problem occurs on the line PreparedStatement pStmt = conn.prepareStatement(\"select * from employee where upper(FIRSTNAME) like ? and upper(LASTNAME) like ? \"

problem occurs on the line

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

my database exist 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"), r开发者_JS百科s
                                .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;

}

}


The problem is you never initialize conn.

For instance, where you do this:

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

conn is still null. Perhaps you meant:

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


Obviously, because conn is null. You have to initialize it.

0

精彩评论

暂无评论...
验证码 换一张
取 消