Как обновить базу данных, используя значения текстовых полей в JDBC? - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь обновить базу данных в JavaFX, используя JDBC и Textfields, Первые текстовые поля, но я получаю ошибки синтаксиса SQL.

Это простой синтаксис обновления, но я должен использовать textfield.getText (), чтобы заполнить данные.

Я пробовал это как запрос, который я выполню:

UPDATE intervention 
set "+update_textfield2.getText()+" = "+update_textfield3.getText()+"  
WHERE ( Numdemande ="+update_textfield.getText()+"

Для объяснения приведенного выше кода: установите поле базы данных, введенное пользователем (update_textfield2), в качестве значения, введенного пользователем (update_textfield3), где число «Numdemande» равно x (update_textfield)

1 Ответ

0 голосов
/ 25 июня 2019

Хотя ваш код небезопасен, как объяснено в комментариях, я отвечу, исходя из предположения, что ваш класс еще не охватил атаки с использованием SQL-инъекций.

Что касается самого оператора SQL, есть несколько проблем.

  • Прежде всего, вы используете двойные кавычки " вместо одинарных кавычек '. Неясно, какой диалект SQL вы используете, но большинству, если не всем, требуются одинарные кавычки при прохождении таких строк.
  • Во-вторых, вы переадресовываете свои звонки на textField.getText() методы в кавычках, то есть вы говорите SQL использовать этот текст в буквальном смысле.
  • Вы не добавили закрывающие скобки ()) в конце вашего предложения WHERE. Однако в этом случае скобки не обязательны.

По сути, вы пытаетесь передать следующий оператор в SQL:

UPDATE intervention
set +update_textfield2.getText()+ = '+update_textfield3.getText()+'
WHERE ( Numdemande = '+update_textfield.getText()+'

Если в вашей таблице нет поля с именем +update_textfield2.getText()+, этот оператор не будет выполнен.

Следующий String даст правильное утверждение:

String statement = "UPDATE intervention " +
                   "SET " + update_textfield2.getText() + " = " + update_textfield3.getText() +
                   "WHERE Numdemande = " + update_textfield.getText() + ";";

Примечание: Пожалуйста, изучите Соглашения об именах Java и придерживайтесь их. В своем коде вы использовали чехол змеи при именовании вашего TextField, но вместо этого следует использовать верблюжий чехол . Соответствующее имя для вашего TextField может выглядеть примерно так: updateTextField1

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