要过fortify之类的静态代码安全扫描。
public static final String[] ALLOWED_DATABASE = {};
public static final String[] ALLOWED_TABLE = {};
String query = "select id from " + ALLOWED_DATABASE[dbIndex] + "." + ALLOWED_TABLE[tableIndex] + " where 1=1";
PreparedStatement ps = connection.prepareStatement(query);
在表名在可控的一个范围内,这样是可以的。完全任意的动态表名还是过不了代码扫描