修剪Java字符串并在Sql Where子句中使用
我试图使用一个查询从MySQL数据库中获取值,该查询从多个选择中获取值。问题是我正在使用StringBuilder
根据我得到的值创建查询。如果您看到Where子句why me,那么每次获取新变量时,最后都会添加一个逗号
如何删除添加的最后一个逗号,因为它在sql查询中给了我一个错误。谢谢你的帮助
String[] stat = req.getParameterValues("status");
StringBuilder sb = new StringBuilder(200);
if (stat != null) {
for (int i = 0; i < stat.length; i++) {
sb.append("'" + stat[i] + "',");
}
String app = "WHERE status in (" + sb.toString() + ")";
String sqlquery = "SELECT * FROM Table " + app + ";";
}
结果查询:
SELECT * FROM Table
WHERE status in ('Deployed','PendingDisposal','Available','Reserved','Broken',);
我想去掉“break”之后的最后一个逗号
# 1 楼答案
您可以使用
deleteChartAt
方法:sb.deleteCharAt(sb.length()-1);
例如:
# 2 楼答案
试试这个
# 3 楼答案
你的问题是逗号在最后,你可以像这样附加字符串:
但事实上,使用这种方式并不是一个好主意,因为它可能会导致SQL注入或语法错误,您必须使用PreparedStatement,例如:
# 4 楼答案
您可以使用Java 8 streams将字符串数组与逗号连接起来:
但是请注意,像这样连接字符串是一个非常糟糕的主意:您很容易受到SQL注入攻击,例如,如果
stat
的元素之一是something like:最好使用
PreparedStatement
构建查询See this question# 5 楼答案
试试看 String app=“WHERE status in(“+sb.substring(0,sb.length()-2)+”)
# 6 楼答案
需要更新
for
循环,其中需要将数组中的元素追加到最后一个元素,并将数组的最后一个元素追加到循环之外