2015-02-22 1 views
0

я хочу, чтобы обновить дату в базе данных при некоторых условиях, поэтому я попробовал этот метод, который я называю его в действии кнопки выполняетсяОбновление SQL в Java

public void DeleteDate (JTextField txt1, JTextField txt2) 
{ 
try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     String m = "IMCDietitian"; 
     String unicode= "?useUnicode=yes&characterEncoding=UTF-8"; 
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/"+m+""+unicode+"","root",""); 
     System.out.println("connected"); 
     String dept = jComboBox1.getSelectedItem().toString(); 

     Statement st = conn.createStatement(); 
     st.executeUpdate("UPDATE "+dept+" SET edate = '"+jTextField1.getText()+"' WHERE pname = '"+txt1.getText()+"' AND rno = '"+txt2.getText()+"' AND edate = '-'"); 

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

Но это не обновляет любую вещь в база данных. Может кто-нибудь мне помочь?

+1

Вы видели никаких исключений? также я бы предложил вам использовать PreparedStatement, так как ваш запрос уязвим для SQL-инъекции. – SMA

+0

Предупреждение, SQL-инъекция ... Используйте 'PreparedStatement'. – fge

+1

@OP, пожалуйста, познакомьтесь с [Маленькими столами Bobby] (http://xkcd.com/327/). –

ответ

0

Там могут быть эти причины не видим каких-либо обновления:

  1. Возможно, где положение не приводит ни к каким строкам возвращаются поэтому ни одна строка не обновляется.
  2. Возможно, автокоммит является ложным. В этом случае вам нужно будет явно называть commit. В качестве примечания вы также можете взглянуть на транзакции.
  3. Исключение, но кажется, что в этом случае его нет.

Кроме того, используйте PreparedStatement - он чище и скомпилирован для повторного использования.

+0

Предложение where, прочитанное из текстового поля и текстовое поле, получает этот текст из базы данных. Поэтому предложение where должно находиться в базе данных. Для автообмена я попробовал conn.setautocommit (true); перед созданием статута, но также он не работает. Может остановить? –

+0

По спецификации auto-commit уже верно для вновь созданного соединения (как в коде вопроса). –

+0

Проведите тест: получите значение переменной «dept», а затем выполните выбор, основанный на тех же параметрах, что и в обновлении SQL, и проверьте, не возвращается ли что-либо. – Khanna111

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