java - Oracle和java动态 'Order by'子句

标签 java sql oracle jdbc

我正在尝试在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/

相关文章:

Java编译器无法识别派生类,即 "symbol not found"错误

java - 如何在 IntelliJ IDEA 中运行 AnnotationProcessor?

oracle - sqoop-连接到oracle并将数据导入IBM BigInsights中的HDFS

sql - Oracle SQL 按多个 OR 条件进行分组

java - Maven 依赖项不会导出到 jar 中

java - 二进制搜索在 Java 中给出 Index Out of Bound 异常

sql - 如何用同一表中另一列的值替换一列的值

mysql - SQL - 当WHERE条件来自列表时循环查询

mysql - MySQL中主键和多列索引的优先级?

sql - 与直接运行相比, hibernate 选择性能较差 - 如何调试?