2013-11-23 2 views
0

아무도 내 SQL 문이 JSP에서 작동하지 않는 이유를 말해 줄 수 있습니까? 내가 오라클에 문자열의 출력을 복사, 그것은 의도대로 작동합니다. 이 진술이 맞습니까? sqlString 주위where clause SQL in JSP

String sqlString; 

sqlString = "crs_sec_schedule_reader.semester = '" + semesterAdjusted+"' "; 


if(!department.equals("Select All")) 
{ 
sqlString += " and discipline_schedule_reader.discipline_name = '" + department+"'"; 
} 

if (div_undr.equals("null") && div_grad.equals("G")) 
{ 
sqlString += "and crs_sec_schedule_reader.D_E_G ='" + "G"+"'"; 
} 
else if (div_undr .equals("U") && div_grad.equals("null")) 
{ 
sqlString += " and (crs_sec_schedule_reader.D_E_G = '"+ "D" +"' or  
crs_sec_schedule_reader.D_E_G ='" + "E"+"')"; 
} 
else 
{ 
sqlString += "and (crs_sec_schedule_reader.D_E_G = '" + "D" + "' or 
crs_sec_schedule_reader.D_E_G ='" + "E"+"'or crs_sec_schedule_reader.D_E_G = '"+"G" 
+"') "; 
} 



..... 

ResultSet rs = stmt.executeQuery("SELECT disc||crs_num FROM crs_sec_schedule_reader  
where'" +sqlString+"' "); 
+0

인쇄를 조심스럽게 살펴 & 여기에 게시 : 예를 들어 다음과 같은보십시오. – Mat

답변

0

제거 따옴표 :

ResultSet rs = stmt.executeQuery("SELECT disc||crs_num FROM crs_sec_schedule_reader where'" +sqlString+"' "); 

다음은 코드의 세부 사항입니다. 당신이

ResultSet rs = stmt.executeQuery("SELECT disc||crs_num FROM crs_sec_schedule_reader where'" +sqlString+"' "); 

난 당신이, where 후 공간 인용 누락 문 아래에 사용되는

ResultSet rs = stmt.executeQuery("SELECT disc||crs_num FROM " 
    + "crs_sec_schedule_reader where " +sqlString); 
+0

나는 그것이 꽤 확신한다. 그의'sqlString'도 작은 따옴표를 포함하고 있다는 것을 기억하십시오. 뒤에 공간이 있는지 확인하십시오. –

0

을 원하는 생각합니다.

stmt.executeQuery("SELECT disc||crs_num FROM crs_sec_schedule_reader where '" +sqlString+"' "); 

또는

sqlString = "crs_sec_schedule_reader.semester = '"+ semesterAdjusted + "'"을;

0

where 후 작은 따옴표 나에게 의심을 보이는

당신은

where 'crs_blah_blah ...... 

로 끝날하지만 매트에서 알 수 있듯이 할거야 - 전체 SQL 문을 인쇄하고 모양이 어떻게되는지 확인 . 이러한 것들은 항상 까다 롭습니다. 제

(조건)

String sqlString; 
// Your Code Goes Here... 
ResultSet rs = stmt.executeQuery("SELECT disc||crs_num FROM crs_sec_schedule_reader WHERE TRUE AND '" + sqlString + "' "); 

를 사용하여 준비된 문은 SQL 주입을 방지하기 위해 WHERE 후

0

공간이 있어야합니다. 전체 생성 된 SQL 문 밖으로

String selectSQL = "SELECT USER_ID, USERNAME FROM DBUSER WHERE USER_ID = ?"; 
PreparedStatement preparedStatement = dbConnection.prepareStatement(selectSQL); 
preparedStatement.setInt(1, 1001); 
ResultSet rs = preparedStatement.executeQuery(selectSQL); 
while (rs.next()) { 
    String userid = rs.getString("USER_ID"); 
    String username = rs.getString("USERNAME"); 
}