Ошибка в синтаксисе SQL при попытке записи в базу данных с Java - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю с MVC в Java для подключения к базе данных. Метаданные setData не работают и не уверены, почему. Моя база данных называется Checker и таблица информации. соединение работает нормально и может читать данные из базы данных в текстовые поля, но когда я помещаю данные в текстовые поля, я получаю сообщение об ошибке.

public static void setData()
{
    try
    {
        String query2 = "INSERT INTO info(name,dob,age,email,address) VALUES"+
    "("+name+","+dob+","+age+","+email+","+address+")";

        statement.executeUpdate(query2);
    }catch(Exception ex)
    {
        System.out.println(ex);
    }
}

В классе представления есть кнопка addBtn, которая пытается установить данные в БД.

public void actionPerformed(ActionEvent e)
{
    conn.name = nameBox.getText();
    conn.dob = nameBox.getText();
    conn.age = ageBox.getText();
    conn.dob = dobBox.getText();
    conn.email = email.getText();

    conn.setData();
    System.out.println(nameBox.getText()+" "+ dobBox.getText()+" "+
    ageBox.getText()+" "+ email.getText()+" "+addrBox.getText());
}

эта ошибка выскакивает:

java.sql.SQLSyntaxErrorException: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с 'taylor, 01-03-04,14, jt @ gmail.com, 123 harris blvd)' в строке 1

Ответы [ 2 ]

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

MariaDB вставить пример:

INSERT INTO person (имя, фамилия) ЗНАЧЕНИЯ ('Джон', 'Доу');

В вашем случае (JDBC) Перейдите на связывание переменных :

try {
    String query2 = "INSERT INTO info(name,dob,age,email,address) VALUES(?,?,?,?,?)";
    statement.setString(1, name);        
    statement.setString(2, dob);        
    statement.setString(3, age);        
    statement.setString(4, email);        
    statement.setString(4, address);        
    statement.executeUpdate(query2);
0 голосов
/ 12 ноября 2018

Ваше имя должно быть указано "('"+name+"' (там стоит одинарная кавычка '). То же самое будет применяться для любых других значений типа string - адрес электронной почты и адрес.

Кроме того, я бы предпочел использовать подготовленные заявления для этого, поэтому цитаты и т.д. будут сделаны для вас.

...