我正在尝试在Java中建立动态sql查询(如下所示)
sqlStr = "Select * " +
"from " + tableName
if(tableName!=null){
if(tableName.equals("Table1"){
sqlStr = sqlStr.concat("order by city desc");
}else if(tableName.equals("Table2"){
sqlStr = sqlStr.concat("order by country desc");
}else if(tableName.equals("Table3"){
sqlStr = sqlStr.concat("order by price desc");
}
}
现在,我想做的是添加一个最终的“ else”语句,该语句将根据表是否包含名为“ custID”的列对查询进行排序。该列将有几个表,因此我想按custID对具有该列的表进行排序。 (而不是为每个具有该列名的表添加数百个if语句。)这可能吗?我见过人们在使用“解码”功能,但我无法在这里弄清楚如何使用它。
最佳答案
使用DatabaseMetaData获取表信息。
您可以使用getTablexxx()
和getColumnxx()
方法获取表信息。
Connection conn = DriverManager.getConnection(.....);
DatabaseMetaData dbmd = conn.getMetaData();
dbmd.getxxxx();
注意:您忘记了
ORDER BY
子句之前的代码中的空间。