您好。
当sql查询包含用户编写的字符串(包括'$%&)等随机字符时,我一直在向我的数据库提交sql查询时遇到愚蠢的小问题。
是否有标准函数可以将用户文本转换为Java的sql友好文本?
THX
答案 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