Java 如何在StringBuilder中附加星号*?
我正在为sql数据库编写一个程序,需要基于所选列构建一个Java 如何在StringBuilder中附加星号*?,java,sql,special-characters,stringbuilder,Java,Sql,Special Characters,Stringbuilder,我正在为sql数据库编写一个程序,需要基于所选列构建一个select查询。如果未选择任何列,我希望使用select*from语法。如何将*附加到StringBuilder ArrayList<String> columns; StringBuilder queryBuilder = new StringBuilder("select "); ... if (columns == null || columns.size() == 0) { queryBuilder.ap
select
查询。如果未选择任何列,我希望使用select*from
语法。如何将*附加到StringBuilder
ArrayList<String> columns;
StringBuilder queryBuilder = new StringBuilder("select ");
...
if (columns == null || columns.size() == 0) {
queryBuilder.append(Character.toString ((char) 42));
} else {
for (String name : columns) {
queryBuilder.append(name);
queryBuilder.append(", ");
}
}
queryBuilder.setLength(queryBuilder.length() - 2);
queryBuilder.append(" from ");
queryBuilder.append(tableName);
ArrayList列;
StringBuilder queryBuilder=新建StringBuilder(“选择”);
...
if(columns==null | | columns.size()==0){
append(Character.toString((char)42));
}否则{
for(字符串名称:列){
queryBuilder.append(名称);
queryBuilder.append(“,”);
}
}
setLength(queryBuilder.length()-2);
queryBuilder.append(“from”);
append(tableName);
我也试过(“*”)
(“\*”
(“\\*”)
(“*”)
((char)42)
。我从StringBuilder获得的输出是selectfromtablename
这应该可以做到:
queryBuilder.append('*');
您遇到的问题是这一行:
queryBuilder.setLength(queryBuilder.length() - 2);
它会影响整个StringBuilder
,不管它是附加了单个字符还是所有列名,但它只会影响列名的串联。将此行移到此处:
} else {
for (String name : columns) {
queryBuilder.append(name);
queryBuilder.append(", ");
}
queryBuilder.setLength(queryBuilder.length() - 2);
}
//queryBuilder.setLength(queryBuilder.length() - 2);
queryBuilder.append(" from ");
queryBuilder.append(tableName);
或者更好的方法是,使用类似或的东西,为您完成的工作,而不是在最后附加额外的“,”
如果您使用的是Java 7或更早版本,那么我建议您使用Apache Commons,它将为您连接列名。谢谢,我忘记了底部的那一行。。。我还将循环替换为queryBuilder.append(String.join(“,”,columns))代码>并且它现在工作得完美无瑕。