java
  • mysql
  • jdbc
  • 2011-07-06 4 views 5 likes 
    5

    코드에 다음 구문이 있지만 JDBC에서 LIKE 연산자를 사용하려고 할 때 작동하지 않습니다. 그냥 같은 경우는,이 ​​방법으로 잘 작동 :JDBC에서 MySQL과 같은 연산자를 사용하는 방법은 무엇입니까?

    ResultSet resultSet = statement.executeQuery("SELECT * 
                   FROM drawings 
                   WHERE name = '"+ DT +"'"); 
    

    하지만 와일드 카드, I는 "%"는 유효한 문자가 아닙니다 말하는 오류가 계속으로 검색 할 LIKE 연산자를 사용하려는 경우 . 어떻게 LIKE 연산자를 올바르게 사용할 수 있습니까? 코멘트에서

    +0

    JSP 페이지에서 쿼리를 실행한다고 말하지 마십시오. – Jacob

    +0

    당신의 LIKE 쿼리는 어떻게 생겼습니까? –

    +0

    query = ("SELECT *에서 도면 이름 WHERE 'LIKE'"% DT % " '"); – Sheeyla

    답변

    15

    는 :

    query=("SELECT * FROM drawings WHERE name LIKE '"%DT%"'"); 
    

    이 컴파일되지 않습니다. DT 변수라고 가정하면, 그것은 오히려

    query = "SELECT * FROM drawings WHERE name LIKE '%" + DT + "%'"; 
    

    과 같아야합니다 (구문 강조에주의를 기울여야의 %은 SQL 문자열의 일부가 될 수있다!)

    그러나 합치 사용자 SQL 쿼리 에서처럼 제어 된 문자열 변수를 사용하면 SQL injectionattacks의 문을 개로 열 수 있습니다. LearnPreparedStatement을 사용하는 대신 사용하는 방법.

    String sql = "SELECT * FROM drawings WHERE name LIKE ?"; 
    // ... 
    preparedStatement = connection.prepareStatement(sql); 
    preparedStatement.setString(1, "%" + DT + "%"); 
    resultSet = preparedStatement.executeQuery(); 
    // ... 
    
    +2

    많은 분들에게 감사드립니다. Balus ... JSP에 대한 여러분의 의견을 이해했습니다 ... 확실히 이것을 고려하여 내 질문에 잘못된 태그를 사용하는 것을 피하십시오 ... 다시 한번 감사드립니다. 일, 그리고 preparedStatement도 구현하고 있습니다. 문안 인사 – Sheeyla

    관련 문제