使用JDBC基于用户输入从SQL数据库中检索数据?

时间:2016-11-18 17:51:20

标签: java mysql jdbc

我正在为一个类开发项目,并且是使用JDBC的初学者。对于一个部分,我的教师希望我们“提供一个查询菜单,允许用户输入查询命令并从数据库中检索信息。”我已经研究了很多,我无法找到一种方法来做到这一点。我见过的大多数示例已经知道用户将要查询的内容。如果我允许用​​户查询任何内容,我该如何返回正确的信息?我到目前为止的代码如下。

System.out.println("What table do you wish to query?");
table = scan.nextLine();
System.out.println("What values do you wish to query? Type them separated by commas. If you wish to select all values, please type a *.");
values = scan.nextLine();
System.out.println("Type the conditions for your WHERE clause, excluding the keyword WHERE.");
conditions = scan.nextLine();
query = "SELECT " + values + " FROM " + table + "WHERE " + conditions;
try {
    stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next()) {
        if(values != "*")
           String results = rs.getString(values);
    }

我被困在哪里因为我不知道用户将要查询什么,所以我不知道在while循环中放什么,就像在这个例子中他们知道用户正在寻找姓氏一样。 / p>

rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001");
while ( rs.next() ) {
    String lastName = rs.getString("Lname");
    System.out.println(lastName);
}

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

我认为你有基础知识,所以我会给你一个pseduocode,以便有可能做到这一点并让你填补空白。

1) input user values and put in an array (VALUESARRAY)
2) validate values against table field names (exit if invalid)
3) prepare query
4) execute query
5) loop through the VALUEARRAY and get appropriate value from the result set     
   (same as you did in your example).

我认为#5是你不确定怎么做的,但使用数组应解决这个问题。