Встроенный SQL INSERT с использованием диалоговых окон

В настоящее время я пытаюсь вставить новые данные в существующую таблицу в моей базе данных, используя встроенный SQL. Мне нужно иметь возможность вводить свои данные в диалоговое окно, а затем показывать их мне в диалоговом окне после его выполнения.

Моя проблема, похоже, связана с «s.executeUpdate(input);», поскольку он говорит мне, что у меня есть ошибка в синтаксисе MySQL. Я не совсем уверен, как это исправить или как изменить синтаксис. Помощь будет высоко оценена!

Connection c = null;
try {

    Class.forName("com.mysql.jdbc.Driver");
    c = DriverManager.getConnection("jdbc:mysql://localhost:3306/company - final project", "root", "");

    String query = "INSERT INTO works_on (ESSN, PNO, HOURS)" + "Values (?, ?, ?)";
    Statement s = c.prepareStatement(query);
    String input = JOptionPane.showInputDialog(null, "Info to be Inserted: ");
    s.executeUpdate(input);
    JOptionPane.showMessageDialog(null, "Data Inserted: " + input);

   c.close();
}
catch (Exception e) 
{
    e.printStackTrace();
}

person C. Walker    schedule 22.11.2015    source источник


Ответы (1)


Для подготовленного заявления требуется 3 параметра, но вы не добавили ни одного. необходимо вызвать s.addXXX в правильном порядке, чтобы указать 3 значения для вставки, где "XXX" - это подходящий тип для значений

person DBug    schedule 22.11.2015
comment
Итак, если мои значения INT, я бы просто закодировал s.addInt(); Я не совсем уверен, как добавить параметры. Всякий раз, когда я кодирую s.addInt, он говорит, что он не определен для оператора типа. - person C. Walker; 22.11.2015
comment
да, вы бы использовали setInt(). Измените тип s с Statement на PreparedStatement. Несмотря на то, что s действительно является PreparedStatement, поскольку вы объявили его как Statement, вы можете получить доступ только к методам, определенным в Statement. - person DBug; 22.11.2015