이전의 질문 중 하나 인 method design에 이어 간단한 문자열과 달리 매개 변수가있는 쿼리로 SQL 쿼리를 구현하는 것이 좋습니다.간단한 매개 변수화 된 쿼리로 인한 오류 - Java/SQL
나는 내가 다음 선택 문 가지고, 간단한 뭔가를 시작하기로 결정하기 전에 매개 변수화 된 쿼리를 사용한 적이 :이 나에게 다음과 같은 오류를 제공
String select = "SELECT * FROM ? ";
PreparedStatement ps = connection.prepareStatement(select);
ps.setString(1, "person");
을 : "[SQLITE_ERROR] SQL 오류 또는 누락 된 데이터베이스 (근처에 "?": 구문 오류) "
나는 다음 추가 기준이 수정 된 버전을 시도;
String select = "SELECT id FROM person WHERE name = ? ";
PreparedStatement ps = connection.prepareStatement(select);
ps.setString(1, "Yui");
이 첫 번째 예제에서는 매개 변수가있는 쿼리의 요점을 놓치고 있습니까? 아니면 잘못 구성 했나요?
감사합니다.
따라서 테이블 (SELECT * FROM person)의 모든 결과를 포함하는 ResultSet을 반환하려면 암시 적으로 문자열로 입력하지 않고는 할 수 없습니까? –
매개 변수가있는 쿼리로 선택 *을
네, 그게 내가 의미하는 바입니다. 그건 수치 스럽습니다. 나는 마지막 명령이 실행 된 이후 변경된 내용으로 JTable을 업데이트 할 수 있도록 테이블을 새로 고치는 것보다 더 나은 방법을 알고 있습니까? –
준비된 명령문은 여전히 SQL이므로 적절한 where 절로 구성해야합니다. 즉 x = y이다. 장점 중 하나는 전송 될 때마다가 아니라 처음 본 RDMS에 의해 구문 분석되어 서로 다른 바인드 값을 가진 동일한 쿼리의 후속 실행을 가속화한다는 것입니다. 당신이 직접 테이블의 모든 행을 원하는 경우
출처
2011-03-30 19:21:47 karakuricoder
, 여기 당신이해야 할 일이다
다른 사람이 위에서 언급 한 바와 같이 동적으로 테이블 이름을 결합하지 않는 바인딩 변수. 당신이 테이블 이름을 변수로 당신의 방법에 오는 경우 , 당신은 다음과 같이 전체 쿼리를 구성 할 수있다 :
매개 변수화 된 쿼리 필드 이름을 쿼리 할 수 있습니다 -하지 테이블 이름!
출처
2011-03-30 19:35:18
자세한 예제를 보내 주셔서 감사합니다. –
관련 문제