将动态插入语句转换为参数化语句

时间:2015-03-06 23:50:39

标签: java sql jdbc prepared-statement sql-injection

我的应用程序根据传入的数据构建动态插入语句。

例如,它动态构建一个插入查询,如:

insert into employees (name, age) values ('Tim', 12)

(我使用sqlbuilder动态生成如上所述的查询。我无法控制哪些列/表构成insert语句 - 它取决于传入的数据。例如,下一个语句可能像:insert into employees (building, salary) values ('Green tower', 9999)

我不想这样使用上面的语句,因为它是为sql注入打开的。

我需要将它转换为PreparedStatement,如下所示:

PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL);
preparedStatement.setString(1, "Tim");
preparedStatement.setInt(2, 99);

有没有图书馆为我做这件事?

1 个答案:

答案 0 :(得分:0)

您的工具不依赖于PreparedStatements,因此无法修复它。你有什么选择: