Непосредственной причиной ошибки, вероятно, является то, что ваш оператор INSERT
содержит следующую строку, которая не заключена в одинарные кавычки:
Arrays.toString(pass)
Однако , вы должны полностью отказаться от своеготекущий подход и вместо этого используйте подготовленный оператор:
String sql = "INSERT INTO user_info (user_id, password, firstname, lastname, emailid, age) " +
"VALUES (?, ?, ?, ?, ?, ?)";
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user_info", "root", "nerdswonka");
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, userid);
ps.setString(2, Arrays.toString(pass));
ps.setString(3, firstname);
ps.setString(4, surname);
ps.setString(5, email);
ps.setInt(6, age);
int row = ps.executeUpdate();
System.out.println(row); // rows inserted (should be 1)
}
catch (SQLException e) {
System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
}
}
Подготовленные операторы делают много вещей, одним из которых является обработка беспорядочных деталей о том, как правильно экранировать ваши литеральные данные в запросе SQL.В этом случае они освобождают вас от необходимости беспокоиться о размещении одинарных кавычек вокруг интерполированных строк Java.Утверждения также предотвращают такие плохие вещи, как внедрение SQL.