2015-11-04 2 views
0

Я использую JCalendarChooser, а пользовательские данные были в формате d MMMM yyyy. Пример вывода: 4 November 2015. До I SELECT из базы данных я меняю его на yyyy-MM-dd. Это мой код, прежде чем SELECT:Подготовленный оператор необходим, если формат пользовательских данных был изменен?

   String date1 = null; 

       java.util.Date d1 = jDateChooser1.getDate(); 
       if (d1 == null) { 
        System.out.println("No date specified!"); 
       } else { 
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); 
        date1 = fmt.format(d1); //jdatechooser 
        // Then select from db 
       } 

Я так понимаю, о проверке пользовательского необходимо дезинфицировать все входные данные от пользователя, но что, если формат данных был изменен? Должен ли я использовать подготовленные заявления в таком случае выше?

Заранее спасибо

ответ

1

Если нет другого способа ввода, чтобы получить от пользователя на запрос кроме прохождения через (и быть подтверждено) в jDateChooser и SimpleDateFormat, то ваш вход адекватно подкорректированное ,

Тем не менее, есть другие причины использовать PreparedStatement над динамической строкой SQL. Если вы запускаете один и тот же запрос несколько раз с разными датами, то каждая динамическая строка SQL, созданная таким образом, будет рассматриваться dbms как новый запрос, который должен быть скомпилирован с нуля, в то время как PreparedStatement будет создавать единый заполняющий файл, план выполнения пробелов, который можно повторно использовать без перекомпиляции. Это может привести к повышению производительности при часто повторяющемся запросе, который является хорошим типом ™.