MSSQL Order by 에러
MSSQL ORDER BY 번호 1에 의해 식별된 SELECT 항목에 열 위치를 식별하는 식의 일부로 변수가 포함되어 있습니다. 변수는 열 이름을 참조하는 식을 기준으로 정렬할 때만 사용할 수 있습니다.
String SQL = "select top 1 * from SMStemp_DB.dbo.Table1 order by ? desc;";
try {
//System.out.println(userID);
//System.out.println(userPassword);
pstmt = con.prepareStatement(SQL);
pstmt.setString(1, "no");
프로젝트 일부발췌
? 써서 인젝션 방어는 맞지만, order by 절 뒤에는 ?를쓰면 안됩니다.
해결 방안
String SQL = "select top 1 * from SMStemp_DB.dbo.Table1 order by no desc;";
try {
//System.out.println(userID);
//System.out.println(userPassword);
pstmt = con.prepareStatement(SQL);
//pstmt.setString(1, "no");
그냥 no 를 적는것으로 해결하였으며, 해당 문제는 해결방법이나 안되는 원인이 생긴다면 다시 적겠다.