2010-07-25 3 views
0

У меня есть обновление в моем jsp. Проблема в том, что когда я изменяю все поля в jsp и выполняю обновление statament, БД будет обновляться, но когда я обновляю определенное поле, другие поля будут «" в операторе SQL. Кроме того, у меня возникла проблема в том, что у меня есть совпадение с датой в дате, так что лучший формат, который будет применяться в SQL-заявлении в моем jsp.Как использовать инструкцию update в моем jsp

первой задачи: HTML код:

<select size="1" name="Nationality" class="content"> 
     <option selected value="<%=Nationality%>"><%=Nationality%></option> 

<% 

    try 
    { 

     ResultSet rs=null; 

     Statement st1=null; 

     String query = "select country_code, nationality_name from nationality_lkup "; 

     st1 = conn1.createStatement(); 

     rs = st1.executeQuery(query); 

     while(rs.next())  
    { 

%> 
    <option value="<%=rs.getString("country_code")%>" > 
     <%=rs.getString("nationality_name")%></option> 
<% 
     } 

    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
%> 

      </select> 

и statament обновление:

String sz_SQLUpdate = "UPDATE cir SET"; 
z_SQLUpdate = sz_SQLUpdate + " , nationality ='"+Nationality+"'"; 

Кроме того, как я могу иметь дело с форматом даты в заявлении обновления?

ответ

3

но когда я обновляю определенное поле, другие поля будут «" в операторе SQL.

Я не уверен, если это полный код (SQL показано, насколько произвел бы синтаксический исключение SQL при выполнении), но вы должны по крайней мере, не ставить запятую между SET и первым именем столбца.

Если SQL действительно синтаксически действителен, это может просто означать, что эти переменные пустые в момент доступа к ним в inline в инструкции SQL. Вы должны либо заполнить эти переменные, либо просто оставить соответствующие столбцы от SQL-запроса, если они не нуждаются в обновлении.

Кроме того, у меня возникла проблема в том, что у меня есть совпадение в дате, так что лучший формат, который будет применяться в инструкции SQL в моем jsp.

Лучше всего не беспокоиться о формате и просто установить fullworthy объект Java, представляющий временную метку в операторе SQL, используя PreparedStatement#setTimestamp(). Также см. Это recent question.


У вас есть две основные проблемы в коде.

  1. Исходный код Java в JSP-файлах следует избегать. Это приводит только к неприятностям во всех цветах не только для вас, но и для других, теперь и в будущем.

  2. Этот SQL является чувствительным к SQL injectionattacks, а код JDBC подвержен утечке ресурсов.

Это будет длинная история, чтобы объяснить, как делать вещи правильно, так что здесь всего лишь несколько ссылок, чтобы пройти через тщательно себя так, что вы получите картину, как делать вещи правильно.

Вы, вероятно, следует выбросить, что старомодный JSP учебник/книга, которую вы сейчас читаете.

Смежные вопросы