我正在尝试在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
子句之前的空格。
关于java - Oracle和java动态 'Order by'子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726895/