Пытаясь встроить значения данных в строку SQL, вы создали проблему SQL Injection . Например, код
int id = 1;
String name = "gord";
String sql = "INSERT INTO people (id, name) VALUES (" + id + ", " + name + ")";
System.out.println(sql);
печать
INSERT INTO people (id, name) VALUES (1, gord)
Когда мы пытаемся выполнить этот оператор, анализатор запросов распознает 1
как целочисленный литерал, но интерпретирует gord
как имя столбца, поэтому мы получим ошибку «пользователю не хватает привилегий или объект не найден».
Решение заключается в использовании параметризованного запроса , например:
int id = 1;
String name = "gord";
String sql = "INSERT INTO people (id, name) VALUES (?, ?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, id);
ps.setString(2, name);
ps.executeUpdate();