【发布时间】:2011-07-27 15:47:06
【问题描述】:
以这种方式完成的这个问题的答案似乎很难在互联网上找到。基本上,我使用 PreparedStatement 将值插入 MySQL 数据库。我使用 PreparedStatement 转义数据以防止 SQL 注入攻击。问题是,现在有办法恢复这些密钥。
String query="Insert INTO Table_A(name, age) (?, ?)";
//String query="Insert INTO Table_A(name, age) ('abc','123' )";//Doesn't escape
PreparedStatement prest;
prest = con.prepareStatement(query);
prest.setString(1,"abc");
prest.setInt(2,123);
prest.executeUpdate();
//prest.executeUpdate(query, PreparedStatement.RETURN_GENERATED_KEYS); Throws an error
//prest.executeQuery(); Throws an error
那么如何在 Java 中转义输入并使用 PreparedStatements?
【问题讨论】:
-
将
RETURN_GENERATED_KEYS传递给prepareStatement()调用并使用executeUpdate()执行插入。如果这不起作用,请提供例外情况。 -
@BalusC 引用了正确的方法。
-
@BalusC,这正是我想要的。糟糕的是它不是一个答案!
-
我刚刚投票赞成关闭作为重复。
标签: java mysql jdbc prepared-statement