SQL-запрос не выполняется через Java на NetBeans - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь обновить базу данных SQL с помощью JBDC. Но по какой-то причине запрос, похоже, не выполняется. Я использую графический интерфейс Jframe для моего экрана входа и меню.

То, что я пытаюсь сделать, это получить номер счета, введенный на экране входа в систему, и взять сумму, введенную пользователем и за вычетом суммы текущим балансом, а затем передать номер счета и сумму переименования в базу данных и обновить баланс счета.

Это часть объявления некоторых значений:

public class MainMenu extends javax.swing.JFrame
{
    private Login log = new Login();

    private Account acc = null;
    private String accnum = log.getacctfld();

    Connection con = new DBConnection().connect();    
}

Это код кнопки вывода:

private void withdrawActionPerformed(java.awt.event.ActionEvent evt)                                         
{                                             
    String input = amountentered.getText();

    if ("".equals(input))
    {
        message.setText("Enter amount to perform operation");
        return;
    }

    Double amt = Double.parseDouble(input);

    if (amt > acc.getAmount() || amt <= 0.0) 
    {
        message.setText("INVALID AMOUNT. PLEASE TRY AGAIN.");

        return;
    }

    double bal = acc.getAmount() - amt;

    String command = "UPDATE user_atm SET balance =? WHERE accno =?";

    try
    {     
        PreparedStatement ps = con.prepareStatement(command);

        ps.setDouble(1, bal);
        ps.setString(2, accnum);

        ps.executeQuery(); // I think the query isn't executing
        ps.executeUpdate();

    }
    catch(Exception e)
    {

    }

    acc.setAmount(bal);

    balance.setText(bal + "");
    amountentered.setText("");

} 

UPDATE:

accnum не инициализировался. Я пытался передать значение из JTextField с моего экрана входа в систему. Но это не сработало. Поэтому я передал номер счета установщику, а затем присвоил получателю accnum, и теперь он работает.

Я тоже удалил ps.executeQuery();

1 Ответ

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

Вы должны использовать executeUpdate() вместо executeQuery()
Из того, что я понял, вы хотите обновить данные в БД, не в этом ли дело?
executeQuery() используется с SELECT инструкциями для выборки строк, а не для обновления.
Так что удалите ps.executeQuery();

...