2015-02-03 4 views
0

Я пытаюсь сделать форму, в которой продавцы могут вставлять новые предметы, новую категорию и удалять элементы. Теперь у меня проблема с DELETE. Это мой код, и если кто-то знает, как его исправить, пожалуйста, помогите.Как удалить данные из базы данных с помощью JDBC

String id = "42"; 

    try 
     { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/projekat","root",""); 

      PreparedStatement prepared_statement = connection.prepareStatement("DELETE FROM artikli WHERE id= ? ;"); 
      prepared_statement.setString(1, id); 
      int result_set = prepared_statement.executeUpdate(); 
      if (result_set > 0) 
      { 
       System.out.println("Deleted"); 
      } 
      else 
      { 
       System.out.println("Can't delete"); 
      } 
} catch (Exception ex) { 
    System.out.println(ex); 
} 
+6

Что в этом плохого? – azurefrog

+3

Объясните, в чем проблема, вместо того, чтобы просто сказать, что есть проблема. – Jesper

+0

Я не знаю, всегда получаю результат. Не удается удалить. И в базе данных mySql все еще есть. – BrotherSrbin

ответ

0

Попробуйте это:

String id = request.getParameter("id"); 

     try 
      { 
       Class.forName("com.mysql.jdbc.Driver"); 
       Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/projekat","root",""); 
       PreparedStatement prepared_statement = null; 

       String strQuery = "DELETE FROM artikli WHERE id= ?"; 
       prepared_statement = connection.prepareStatement(strQuery); 
       prepared_statement.setString(1, id); 
       int result_set = prepared_statement.executeUpdate(); 

       if (result_set > 0) 
       { 
        // System.out.println(result_set);      
        response.sendRedirect("Prodaja2.jsp"); 
       } 
       else 
       { 
        // System.out.println(result_set); 
        response.sendRedirect("Prodaja2.jsp?error=Can'tDelete"); 
       } 
    } catch (Exception ex) { 
     out.print(ex); 
    } finally { 
     try { 
      stmtProd.close(); 
      connection.close(); 
     } catch (Exception ex) { 
      System.out.println(ex.getMessage()); 
     } 
    } 
} 


protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    doGet(request, response); 
} 

В коде на точку с запятой после запроса могут быть противоречивыми. Кроме того, не забудьте закрыть соединения в блоке finally, потому что это может привести к утечке ресурсов, и соединение останется активным, даже если пользователь выйдет из системы.

+0

Попробуйте это *** почему? *** Простой код - это не ответ. Вы должны * объяснить, * и часто объяснение достаточно без какого-либо кода. – EJP

+0

@EJP ... Я уже добавил объяснение в нижней части моего ответа. – Leo

0

Одна ошибка здесь, то есть в вашем синтаксисе

Изменить код

PreparedStatement prepared_statement = connection.prepareStatement("DELETE FROM artikli WHERE id= ? ;"); 

в

PreparedStatement prepared_statement = connection.prepareStatement("DELETE FROM artikli WHERE id= ?"); 

Если нет других ошибок, Проверьте значение идентификатора, есть шанс нулевого значения.

+0

Я пробовал это раньше, это не решение. Но спасибо за попытку помочь. – BrotherSrbin

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