정확히는 JDBC 내부적으로 SQL Injection에 대응하고 있다. PreparedStatement 클래스를 예로 들면 setString() 메서드에 내부적으로 SQL Injection에 대응하고 있기 때문에 안전하게 사용할 수 있다.

따라서 아래와 같은 코드를 작성하지 않도록 조심하자.

String sql = "select "
      + "customer_id,acc_number,branch_id,balance "
      + "from Accounts where customer_id = '"
      + customerId 
      + "'";
    Connection c = dataSource.getConnection();
    ResultSet rs = c.createStatement().executeQuery(sql);

select count(1) from user where id = ? and password = ?