2013-11-23 3 views
0

Может ли кто-нибудь сказать мне, почему мой оператор SQL не работает в JSP. Я копирую вывод строки в oracle, он работает по назначению. Правильно ли это утверждение?где предложение SQL в JSP

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

Ниже подробно кодов:

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

Распечатайте полный сгенерированный оператор SQL и внимательно посмотрите на него и разместите его здесь. – Mat

ответ

0

Снимите Одиночные кавычки sqlString.

Где у вас есть

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); 
+0

Я уверен, что это так. Помните, что его 'sqlString' также содержит одинарные кавычки. Удостоверьтесь, что есть место после того, где тоже. –

0

У вас не хватает пространства цитаты после where, используйте ниже заявление.

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 заявление и посмотреть, как это выглядит , Эти вещи всегда неудобны.

0

пространство должно быть после предложения WHERE

(WHERE условие)

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

Использование Подготовленные Заявление Предотвратить SQL Injection. Попробуйте следующий пример:

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"); 
} 
Смежные вопросы