String username="abc";
String pwd="abc";
String query="Select username,pwd where username = ? and pwd = ?";
我想用username和pwd指定的不同值替换此字符串中的字符'?'
..是否有任何函数我们可以找到'?'
两次,并用username替换它和pwd?
答案 0 :(得分:4)
当然,请查看String.replaceFirst
例如:
String query = "Select username,pwd where username = ? and pwd = ?"
.replaceFirst("\\?", username)
.replaceFirst("\\?", pwd)
请注意,您可能希望正确转义username
和pwd
。
考虑一下如果我提供类似
的内容会发生什么 or 1=1
作为密码。
有关此问题的更多信息,请查看以下各种答案:
如果可能,请使用PreparedStatements
!
答案 1 :(得分:1)
答案 2 :(得分:1)
你可以这样做:
String username="abc";
String pwd="abc";
String query="Select username,pwd where username = ? and pwd = ?";
query = query.replaceFirst("\\?", username);
query = query.replaceFirst("\\?", pwd);
但是如果您正在为实际的db-query执行此操作,则需要使用预准备语句: 例如
String username="abc";
String pwd="abc";
String query="Select username,pwd where username = ? and pwd = ?";
PreparedStatement pStmt = con.prepareStatement(query);
pStmt.setParameter(1, username);
pStmt.setParameter(2, pwd);
ResultSet rs = pStmt.executeQuery();
答案 3 :(得分:0)
关于字符串替换的OT,但是如果您计划在JDBC中使用SQL,请查看为您执行此操作的PreparedStatement
并阻止SQL注入。
http://download.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html
答案 4 :(得分:0)
您可以在此方案中使用string.format
即
query = String.format(query,username,pwd);
使用%s
代替?