Java Struts2:将SQL查询保存到数据库中
在my Struts2 Java web应用程序中,允许用户查询数据库。例如,用户需要获取名为“Charles”的员工详细信息。然后,他/她可以选择报告列和条件(firstname='Charles') 一旦用户给出上述输入,就需要将相关的SQL查询保存到数据库中Java Struts2:将SQL查询保存到数据库中,java,sql,Java,Sql,在my Struts2 Java web应用程序中,允许用户查询数据库。例如,用户需要获取名为“Charles”的员工详细信息。然后,他/她可以选择报告列和条件(firstname='Charles') 一旦用户给出上述输入,就需要将相关的SQL查询保存到数据库中 e.g. SQL -> SELECT * FROM employee WHERE firstname='Charles' 以下是我在动作课上尝试的内容 try { connection = DriverMana
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作为数据库
e.g. SQL -> SELECT * FROM employee WHERE firstname='Charles'
有任何解决此问题的建议吗?切勿使用用户提供值的字符串串联来构建SQL语句。
绝不使用任何非整数值的字符串串联来构建SQL语句。
您将面临攻击和/或SQL语句错误。
黑客会因为你允许他们窃取你的所有数据而爱上你,而邪恶的黑客会破坏或删除你的所有数据,同时在他们去银行的路上疯狂地嘲笑你 使用
PreparedStatement
和参数标记
String sql = "INSERT INTO reports (report_id, sql) values (?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, reportId);
stmt.setString(2, sqlQ);
stmt.executeUpdate();
}
如果你现在开始,考虑一些10年更新的事情,比如JPA 2。