Строки после executeQuery(quer) не выполняются?
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
String del_user = JOptionPane.showInputDialog(null,"Enter the Username To be deleted :" ,"Delete User !", JOptionPane.WARNING_MESSAGE);
try {
stmt = con.createStatement();
String quer = "delete from Udet where username='"+del_user+"'";
rs=stmt.executeQuery(quer);
int count=0;
while(rs.next())
{
count++;
}
if(count==1)
{
JOptionPane.showMessageDialog(null,"The user has been deleted");
}
else
{
JOptionPane.showMessageDialog(null,"No such User Exists");
}
} catch(Exception e){}
}
ЗАПРОС ВЫПОЛНЯЕТ ШТРАФ! ЗАПИСЬ УДАЛЯЕТСЯ, НО ЛИНИИ ПОСЛЕ QUERYEXECUTION НЕ ВЫПОЛНЯЮТСЯ... JOptionPane будет работать после блока try, но тогда значение count не будет определено...
1 ответ
DELETE
заявление не возвращает ResultSet
и поэтому вы должны использовать метод stmt.executeUpdate(quer);
вместо stmt.executeQuery(quer);
, Один из способов увидеть, сколько результатов было удалено из запроса, - запустить SELECT COUNT(*)
запрос к таблице до и после DELETE
с использованием executeQuery()
метод, который будет оба раза возвращать ResultSet
с единственным результатом, содержащим, сколько записей содержит таблица. После запуска до и после DELETE
Вы можете сравнить 2 числа. Результатом, вероятно, будет String
но вы можете просто использовать int integer = Integer.parseInt(String);
чтобы получить int
от него. Код должен выглядеть так:
stmt = "SELECT COUNT(*) AS Count FROM table_name";
int initialSize = 0;
rs = stmt.executeQuery(stmt);
while(rs.next){
initialSize = Integer.parseInt(rs.getString("Count");
}
Запустить DELETE
запрос, а затем повторите COUNT
запрос прохождения int
в новую переменную (для этого ответа я назову это newSize
) поэтому количество изменений DELETE
сделано будет:
int changesMade = initialSize - newSize;