JDBC를 통해 실행되는 SQL 쿼리와 관련된 테이블의 이름을 알 수있는 방법이 있습니까? 예를 들어JDBC : SQL 쿼리와 관련된 테이블 이름 얻기
:
SELECT r.roleId FROM User u, UserRole r where r.userId = u.userId and u.name = "Jonh Smith"
나는 단지이 쿼리의 결과 집합하지만 실제 테이블 이름 ("사용자"및 "역할")를 원하지 않습니다. 뷰 이름은 신경 쓰지 않지만 뷰에 사용 된 기본 테이블을 얻는 방법이 없다면 큰 문제는 아니지만 중첩 쿼리와 함께 작동해야합니다.
다른 개발자가 응용 프로그램을 빌드 할 수있게 해주는 플랫폼을 만들고 있기 때문에이 정보가 필요한 이유는 다음과 같습니다. 필자의 플랫폼에서는 다른 개발자가 자신의 쿼리를 등록하게하고이를 데이터베이스에 저장합니다. 나는 개발자가 실제로 쿼리 자체와 함께 테이블 이름을 실제로 수동으로 등록해야하는 것을 원하지 않는다. 그래서 내가 쿼리를 실행하고있을 때 나는 그 쿼리가 무엇을하는지 실제로 알지 못합니다.
당신이 묘사 한 것 ("다른 개발자들이 자신의 쿼리를 등록하고 데이터베이스에 저장하게했습니다 ... 그래서 쿼리를 실행하고있을 때 나는 그 쿼리가 무엇을하는지 모릅니다. ")는 일어날 대기 SQL 주입입니다. –
@BrianRoach 다른 개발자가 내 서버에서 응용 프로그램을 실행하지 않을 것입니다. 내 플랫폼의 각 "사용자 정의"는 개발자가 별도로 배포합니다. 따라서 쿼리가 악용되지 않을 것이라고 확신 할 수 있습니다. 응용 프로그램의 일반 사용자는 쿼리에 액세스 할 수 없습니다. – Hoffmann