쿼리 매개변수 및 변수 열 이름
Java에서 JDBC 준비된 문을 사용하면 동적 열 이름을 지정해야 하는 시나리오가 발생할 수 있습니다. 쿼리에 지정되었습니다. 안타깝게도 열 이름을 준비된 명령문 값으로 직접 설정할 수는 없습니다. 대신 열 값이 필요하기 때문입니다.
열 이름을 값으로 지정하려고 하면 다음과 같은 쿼리가 발생합니다.
SELECT a,b,c,'d,e,f' FROM some_table WHERE d='x'
그러나 원하는 쿼리는 다음과 같습니다.
SELECT a,b,c,d,e,f FROM some_table WHERE d='x'
솔루션 및 고려 사항
이런 방식으로 변수 열 이름을 사용하면 데이터베이스 설계 문제가 발생하고 SQL 주입 취약점의 위험이 높아질 수 있으므로 사용하지 않는 것이 좋습니다. 대신, 이러한 "열 이름"을 보유하고 그에 따라 데이터를 저장하는 전용 데이터베이스 열을 생성하는 것을 고려하십시오.
여전히 변수 열 이름이 필요한 경우 해결 방법은 입력을 삭제하고 SQL 문자열을 수동으로 작성하고 인용부호를 사용하는 것입니다. String#replace()를 사용하여 열 이름 및 이름 내의 이스케이프 따옴표를 사용합니다. 이 접근 방식에는 SQL 주입 취약점이 발생할 가능성이 있으므로 정리가 중요합니다.
위 내용은 JDBC 준비 명령문에서 동적 열 이름을 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!