2013-05-16 2 views
0

Итак ... Я хочу удалить строку из базы данных с помощью JTable, но я не знаю, почему она не удаляется, может быть, синтаксис УДАЛЕНИЕ isntruction неправильно ...Я не могу удалить из базы данных SQL, используя JTable

borrar.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(final ActionEvent e) 
     { 

      System.out.println(tabla_proveedor.getSelectedRow()); 

      if (tabla_proveedor.getSelectedRow()!=-1){ 

       id_borrado=datos_proveedor[tabla_proveedor.getSelectedRow()][0]; 
       System.out.println(id_borrado); 

      try{ 
      Statement st = conexion.createStatement(); 
      st.executeUpdate("DELETE FROM `boticaebenezer`.`proveedores` WHERE `proveedores`.`id_proveedor` = id_borrado;'"); 
      System.out.println("Se borró"); 


      } 
      catch (SQLException s){ 
       System.out.println("SQLException: " + s.getMessage()); 
       System.out.println(s.getErrorCode()); 

      } 

     } 
     } 


}); 

Обновлена ​​моя программа, как это, и это ошибка, я получаю от улова.

SQLException: У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «»»в строке 1

Я не знаю, как оценить, если id_proveedor имеет такое же значение, как струнный id_borrado

Редактировать: найдено решение, реальный sitnaxis был: st.executeUpdate; ('+ id_borrado + ";" "DELETE FROM boticaebenezerproveedores ГДЕ proveedoresid_proveedor =.."')

Благодаря всей вашей помощи :)

ответ

1

Использование executeUpdate для операций записи базы данных. Также используйте PreparedStatement вместо защиты от SQL Injection атак.

String sql = "DELETE FROM proveedores WHERE id_proveedor=?"; 
PreparedStatement preparedStatement = conexion.prepareStatement(sql); 
preparedStatement.setString(1, "id_borrado"); 

int rows = preparedStatement.executeUpdate(); 

Наконец, всегда отображает сообщения исключений в Exception блоков, чтобы помочь источник проблему SQLException.

+0

Mmm, теперь он отображает System.out.println («Se borró»); Правильно, но все равно не удалите строку, не могли бы вы проверить sintaxis? – Adrian

+0

Я бы подумал удалить цитаты вокруг 'id_proveedor', если это имя вашего столбца. –

+0

Я отредактировал вопрос с обновленным кодом, чтобы узнать, помогает ли он больше, я пробовал кавычки и ничего. – Adrian

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