我的建议是键和列的映射。这是一个安全的解决方案。
一开始,我们以最简单的方式启动我们的地图。为方便起见,我重载了 get(Obiect key)方法以在失败的情况下返回默认列(“fullName”)。这将防止 SqlExeption。
static Map<String,String> sortCol;
{
sortCol = new HashMap<String, String>(){
{//Enter all data for mapping
put("name","fullName");
put("rok","year");
put("rate","likes");
put("count-rate","countRate");
}
/**
*
* @param key for column name
* @return column name otherwise default "fullName"
*/
@Override
public String get(Object key) {
String col =super.get(key);
return null==col?"fullName":col;
}
};
}
这是一个简单的使用示例。
String sqlQuery= "Select \"fullName\",year,likes,count-rate, country ..."+
"from blaBla..."+
"where blaBla..."+
"order by "+sortCol.get("keySort") "\n"; // keySort can have the value name, count-rate etc ..
顺便说一句,您永远不应该在用户界面中透露列的真实名称,例如 REST 或 SOAP 等……对于攻击者来说,这是一个很大的帮助。