SQL-запрос не выполняется через Java в Netbeans

Я пытаюсь обновить свою базу данных 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("");

} 

ОБНОВИТЬ:

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

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

Тем не менее вы должны удалить ps.executeQuery();

forpas 03.11.2018 13:10

@forpas о да, я тоже удалил это. Извините, я забыл об этом упомянуть. Спасибо

Vishal 03.11.2018 14:24
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
295
1

Ответы 1

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

Если это не сработает, значит, оператор неверен, или в таблице нет дополнительных данных.

forpas 03.11.2018 09:30

Другие вопросы по теме