Sqlite Обновление данных запроса в базе данных не обновляет приложение java gui - PullRequest
1 голос
/ 25 апреля 2020

Ребята, я пытаюсь обновить данные в своей базе данных. Я уже создал вставку и опцию удаления, но после создания этого запроса на обновление мои данные не обновляются в базе данных, поэтому я прошу вашей помощи, пожалуйста, помогите мне, моя проблема в видео и учебник доступен онлайн, данные обновляются с помощью оператора where, в котором они используют целочисленный тип данных, но в моей базе данных нет целочисленного поля, у меня есть только строковое поле, а данные не обновляются, пожалуйста, помогите опубликовать код кнопки обновления ниже enter code here

JButton ud_btn_Update = new JButton("Update");
        ud_btn_Update.setFont(new Font("Tahoma", Font.BOLD, 20));
        ud_btn_Update.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try { String query="update Customers set "
                        + "Name='"+ud_tf_Name.getText()+"' "
                        + ",Address='"+ud_tf_Address.getText()+"' "
                        + ",Gstin='"+ud_tf_Gstin.getText()+"' "
                        + ",Discount='"+ud_tf_Discount.getText()+"' "
                        + ",State='"+ud_tf_State.getText()+"' "
                        + ",StateCode='"+ud_tf_StateCode.getText()+"' "
                        + " where Name='"+ud_tf_Name.getText()+"' ";

                PreparedStatement pst = connection.prepareStatement(query);  
                  pst.execute();
                  JOptionPane.showMessageDialog(null, "Data Updated!");
                  pst.close();
            } catch(Exception e4) {
                e4.printStackTrace();
                }

1 Ответ

1 голос
/ 25 апреля 2020

Ваш код кажется синтаксически правильным, и он должен работать, если таблица существует, а имена таблиц и столбцов не написаны с ошибками. То, что может привести к тому, что код не обновит строку в таблице, - это предложение where. Это значение:

ud_tf_Name.getText()

, очевидно, является новым именем, которое вы хотите заменить старым значением в столбце name, верно? Таким образом, он не существует в таблице, а предложение where не возвращает ни одной строки и ничего не обновляется. Вы должны сохранить старое имя в строковой переменной, скажем, oldname и использовать его в предложении where:

............................................
 + " where Name='"+oldname+"' ";

Также вы должны научиться использовать параметры с подготовленными выражениями для создания более безопасного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...