>Java >java지도 시간 >JDBC 준비 명령문에서 동적 열 이름을 어떻게 처리할 수 있습니까?

JDBC 준비 명령문에서 동적 열 이름을 어떻게 처리할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-10 09:27:14879검색

How Can I Handle Dynamic Column Names in JDBC Prepared Statements?

쿼리 매개변수 및 변수 열 이름

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.