요청 매개 변수에서 preparedStatement.setObject()로 오는 String List를 단일 매개 변수로 전달하려고합니다. 여기에 Object of 목록이 있습니다. 단일 문자열.preparedStatement.setObject() 내에서 하나의 매개 변수로 문자열 목록을 전달하지 않음
변환 된 String을 setObject 메소드에 전달하는 동안 'to \'로 변환 중입니다. sqlParams.get (카운터) 나에게 다음과 같은 값을주고 여기
select * from category where category IN (?)
for (int counter = 0; (!sqlParams.isEmpty()) && counter < sqlParams.size(); counter++) {
System.out.println(sqlParams.get(counter));
stmt.setObject(counter + 1, sqlParams.get(counter));
System.out.println(stmt.toString());
}
: 같은
그래서 내 쿼리입니다.
: 쿼리 형성에'\'Adult\', \'Classic\', \'Fantasy\', \'Mystery\''
그래서이 같은 것입니다 : 내가 stmt.setObject()를 사용하고 stmt를의 값을 인쇄하고
'Adult', 'Classic', 'Fantasy', 'Mystery'
하지만 원자바오, 그것은 다음과 같은 값을 보여주고있다
SELECT * FROM mytable WHERE category IN ('Adult\', \'Classic\', \'Fantasy\', \'Mistry\'');
개별적인 String 전달 및 각 개별 String에 대한 쿼리 실행과 같은 이러한 접근 방식을 해결하는 다른 방법이 있습니다. 그러나 내 코드의 시간 복잡성이 증가합니다. 아무도 나에게 해결책을 제안 할 수 있습니까?
왜'PreparedStatement.toString()'의 반환 값에 신경 쓰나요? "내 코드의 시간 복잡성이 증가하고 있습니다"라는 의미는 무엇입니까? 이 루프가 코드에서 병목 현상이 발생하면 나는 놀라워 할 것입니다. 다른 한편으로는, 나는 당신의 코드가 당신이 원하는 것을 실제로하지 않는다고 생각한다 - 당신은 당신의 SQL에 하나의 매개 변수만을 지정하고 있지만, 다중 매개 변수 값을 설정하고있다 ... –
[PreparedStatement IN 절 대안?] (http://stackoverflow.com/questions/178479/preparedstatement-in-clause-alternatives) 그리고 "시간 복잡성"을 극복하십시오. 어떤 의미가 없습니다. – BalusC
Java의 시간 복잡도는 성능과 거의 같습니다. –