我正在考虑该方法的设计,该方法将使用户可能传递一个整数列表,指示用户希望从数据库中检索的列。
我不想硬编码多个基本上做同样事情的方法,即向用户显示不同的列但是来自同一个表。
这是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中只返回用户希望看到的列(实际上我该怎么做)?好吧,我猜你明白我的问题。
答案 0 :(得分:0)
您可以从特定表中检索所有数据,并使用它来填充相应对象的集合。然后根据用户的选择,您可以打印出相应的列。
假设您知道如何创建适当对象的集合,我将解释您如何进行下一步。
您可以向用户显示一条消息,要求他输入他希望看到的列。比如,输入1查看咖啡名称,输入2查看供应商ID,输入3查看价格等,输入0查看数据。
所以你基本上一直在读取int,直到用户输入0.一旦他输入零,显示请求的值。