Java JDBC,查看用户指定的表的列

时间:2016-06-29 18:29:00

标签: java sql-server oracle jdbc

我正在考虑该方法的设计,该方法将使用户可能传递一个整数列表,指示用户希望从数据库中检索的列。

我不想硬编码多个基本上做同样事情的方法,即向用户显示不同的列但是来自同一个表。

这是Oracle教程中有关使用JDBC检索值的代码:

public static void viewTable(Connection con, String dbName)
    throws SQLException {

    Statement stmt = null;
    String query =
        "select COF_NAME, SUP_ID, PRICE, " +
        "SALES, TOTAL " +
        "from " + dbName + ".COFFEES";

    try {
        stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            String coffeeName = rs.getString("COF_NAME");
            int supplierID = rs.getInt("SUP_ID");
            float price = rs.getFloat("PRICE");
            int sales = rs.getInt("SALES");
            int total = rs.getInt("TOTAL");
            System.out.println(coffeeName + "\t" + supplierID +
                               "\t" + price + "\t" + sales +
                               "\t" + total);
        }
    } catch (SQLException e ) {
        JDBCTutorialUtilities.printSQLException(e);
    } finally {
        if (stmt != null) { stmt.close(); }
    }
} 

因此查询不是问题,可以连接列名,具体取决于用户想要查看的列。问题出在try块中。如何从结果集中获取正确的格式?或者我应该只为每列使用字符串?或者我应该硬编码所有表列(rs.get取决于列的数据类型)然后在println中只返回用户希望看到的列(实际上我该怎么做)?好吧,我猜你明白我的问题。

1 个答案:

答案 0 :(得分:0)

您可以从特定表中检索所有数据,并使用它来填充相应对象的集合。然后根据用户的选择,您可以打印出相应的列。

假设您知道如何创建适当对象的集合,我将解释您如何进行下一步。

您可以向用户显示一条消息,要求他输入他希望看到的列。比如,输入1查看咖啡名称,输入2查看供应商ID,输入3查看价格等,输入0查看数据。

所以你基本上一直在读取int,直到用户输入0.一旦他输入零,显示请求的值。