是否有一个标准函数用于在Java中将字符串转换为sql友好字符串?

时间:2010-12-25 15:31:34

标签: java sql

  

可能重复:
  Java - escape string to prevent SQL injection

您好。

当sql查询包含用户编写的字符串(包括'$%&)等随机字符时,我一直在向我的数据库提交sql查询时遇到愚蠢的小问题。

是否有标准函数可以将用户文本转换为Java的sql友好文本?

THX

1 个答案:

答案 0 :(得分:7)

以下建议适用于任何语言或框架:不要通过连接字符串来编写查询,这是不安全的。改为使用参数化查询。

在Java中,参数化查询是使用PreparedStatement编写的。例如:

PreparedStatement stmt = connection.prepareStatement("SELECT * FROM whatever WHERE id = ? AND name= ?");
stmt.setInt(1, 1000); // parameters starts at 1
stmt.setString(2, "'$%&");
ResultSet rs = stmt.executeQuery();
// ...

更多细节: http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html

另请参阅PreparedStatement的文档: http://download.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html