Как показать, есть ли запись в базе данных? - PullRequest
0 голосов
/ 03 ноября 2019

В настоящее время я создаю программу, в которой я могу удалить определенные записи в базе данных. Я могу это сделать, но я хотел добавить экран JOptionPane, когда он может или не может его найти (поэтому, когда имя не найдено, его не нужно искать, и выведите сообщение о том, что его нельзя найти). Я попытался использовать выражение результата, но это не сработало. Если кто-нибудь знает, как это сделать, прокомментируйте, как это сделать!

private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {                                          
    ArrayList<Cookbook  > recipes = new ArrayList();
    String name = txtName.getText();
    try {
        String url = "jdbc:derby://localhost:1527/Cookbook";
        Connection conn = DriverManager.getConnection(url);
        String query = "DELETE from RECIPES WHERE NAME = ?";
        PreparedStatement pst = conn.prepareStatement(query);
        pst.setString(1, name);
        pst.executeUpdate();




        JOptionPane.showMessageDialog(null, name + " was sucessfully deleted");
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "was not found or could not be deleted");
    }

1 Ответ

0 голосов
/ 03 ноября 2019

Цитирование Javadoc executeUpdate():

Возвращает:

any (1) количество строк для операторов языка манипулирования данными SQL (DML) или (2) 0 для операторов SQL, которые ничего не возвращают

Итак:

String url = "jdbc:derby://localhost:1527/Cookbook";
try (Connection conn = DriverManager.getConnection(url)) {
    String query = "DELETE from RECIPES WHERE NAME = ?";
    try (PreparedStatement pst = conn.prepareStatement(query)) {
        pst.setString(1, name);
        int rowCount = pst.executeUpdate();
        if (rowCount == 0) {
            JOptionPane.showMessageDialog(null, "'" + name + "' was not found");
        } else if (rowCount == 1) {
            JOptionPane.showMessageDialog(null, "'" + name + "' was successfully deleted");
        } else { // cannot happen if `NAME` has unique index in the database
            JOptionPane.showMessageDialog(null, rowCount + " recipes named '" + name + "' were deleted");
        }
    }
} catch (Exception e) {
    JOptionPane.showMessageDialog(null, "something went wrong: " + e);
}
...