我正在尝试在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子句之前的代码中的空间。

09-11 09:02