Как использовать заявление об обновлении в моем JSP - PullRequest
0 голосов
/ 25 июля 2010

У меня есть обновление в моем JSP. Проблема заключается в том, что когда я изменяю целые поля в jsp и выполняю отчет об обновлении, БД будет обновляться, но когда я обновляю определенное поле, другие поля будут "" в операторе SQL. Кроме того, у меня проблема в том, что у меня нет совпадений в дате, так какой формат лучше всего применять в выражении SQL в моем 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>

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

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

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

1 Ответ

3 голосов
/ 26 июля 2010

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

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

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

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

Лучший подход - не беспокоиться о формате и просто установить полноценный объект Java, представляющийотметка времени в выражении SQL с использованием PreparedStatement#setTimestamp().Также посмотрите этот недавний вопрос .


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

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

  2. Этот SQL чувствителен к SQL-инъекция атакует , а код JDBC подвержен утечке ресурсов.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...