Java에서 MySQL을 사용하는 방법을 배우려고하고 있습니다. 제목에서 말하는 것처럼 준비된 문과 관련된 문제가 있습니다. 자바에서준비된 구문의 매개 변수로 테이블 이름을 전달합니다.
mysql> select * from temp;
+------+-----------------------------------------------+
| id | value |
+------+-----------------------------------------------+
| 1 | this is a first item |
| 2 | this is the second item |
| 3 | This is the third item and slightly redundant |
+------+-----------------------------------------------+
3 rows in set (0.00 sec)
나는이 같은 DB에 접근하고 있습니다 :
stmt = conn.prepareStatment("select * from ?");
stmt.setString(1,"temp");
ResultSet rs = stmt.executeQuery(); //This method call throws the exception
stmt.toString
는 알 수
select * from 'temp'
예외 메시지는 다음과 같습니다.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''temp'' at line 1
입력 할 때 select * from 'temp'
stmt.toString()
)를 MySQL 콘솔에 직접 입력하면 동일한 메시지가 나타납니다.
상상했을 것입니다.이 개념을 JSP 웹 페이지에 적용 할 계획입니다. 여기서 JSP 이름은 HTTP GET 매개 변수입니다. 그래서 내 질문 : 테이블 이름을 준비된 문을 바인딩 할 수 및 불가능한 경우 (나는 PHP에 대한 비슷한 질문에서 얻는 분위기입니다) 어떻게 테이블 이름에 대한 입력을 sanitize 것인가?
그래, 나는 그것을 보았지만 대답은 그다지 확신이 없거나 도움이되지 않았다. 나는 미래에이 문제에 부딪히는 모든 사람들을 위해서 보안을 희생하지 않는 더 나은 해답이나 문제에 대한 해결책을 기대하고 있습니다. – Alex
(양식 데이터와 달리) 테이블 이름을 정제 할 필요가 없으므로 문제의 원인을 알 수 없습니다. – blackcompe
여러 개의 카드 주제로 플래시 카드 프로그램을 만들려고합니다. 그래서 각 주제가 다른 표 (다른 주제는 다른 정보를 저장할 필요가있을 수 있습니다)가되고 싶습니다. – Alex