В моем веб-приложении Struts2 Java пользователям разрешено запрашивать базу данных. В качестве примера пользователь должен получить сведения о сотрудниках, чье первое имя равно «Чарльз». Затем он/она может выбрать столбцы и критерии отчета (firstname = 'Charles').Struts2: сохранить SQL-запрос в базе данных
После того, как пользователь предоставит выше входы, ему необходимо сохранить соответствующий SQL-запрос в базе данных.
e.g. SQL -> SELECT * FROM employee WHERE firstname='Charles'
Вот что я пытаюсь в своем классе действий.
try {
connection = DriverManager.getConnection(
SelectAction.getDatabase(), SelectAction.getUser(),
SelectAction.getPassword());
if (connection != null) {
System.out.println("Database connection established!");
stmt = connection.createStatement();
String sql = "INSERT INTO reports (report_id, sql) values ('" + reportId + "', '" + sqlQ + "');";
System.out.println("sql--->" + sql);
// Executing query
stmt.executeQuery(sql);
return SUCCESS;
} else {
System.out.println("----Failed to make connection!");
return ERROR;
}
} catch (SQLException e) {
System.out.println("Connection Failed!!");
e.printStackTrace();
return SUCCESS;
}
Это мой запрос на ввод.
INSERT INTO reports (report_id, sql) values ('mynewreport', 'SELECT * FROM employee WHERE firstname='Charles'');
У меня возникает следующая ошибка в моей консоли.
ERROR: syntax error at or near "Charles"
Я думаю, что здесь я использую строку, так что проблема связана с кавычками ('). Я использую postgreSQL в качестве базы данных.
Любые предложения по решению этой проблемы?
Если вы начинаете сейчас, рассмотреть вопрос об изучении что-то 10 лет новее, как JPA 2. [DAO мертв, да здравствует JPA] (http://www.adam-bien.com/roller/abien/entry/jpa_ejb3_killed_the_dao). –