使用 JDBC 根据用户输入从 SQL 数据库中检索数据? [复制]

Posted

技术标签:

【中文标题】使用 JDBC 根据用户输入从 SQL 数据库中检索数据? [复制]【英文标题】:Retrieve data from SQL database based on user input using JDBC? [duplicate] 【发布时间】:2017-04-02 15:57:11 【问题描述】:

我正在为一个班级做一个项目,并且是使用 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 循环中放什么,就像在这个例子中他们知道用户正在寻找姓氏一样。

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

任何帮助或建议将不胜感激。

【问题讨论】:

刚刚在这里得到了一个 ping。是否发布和删除了重复的标注? @Drew 是的,我认为发布了更具体的答案,所以.. 【参考方案1】:

我认为你有基础知识,所以我只会给你一个可能的方法的伪代码,让你填补空白。

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 是你不知道该怎么做,但使用数组应该可以解决这个问题。

【讨论】:

以上是关于使用 JDBC 根据用户输入从 SQL 数据库中检索数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 Hive 中执行 SQL 过程

将 Shiro 的 PasswordMatcher 与自定义领域一起使用

如何使用 JDBC 将用户在 jsp 输入类型“时间”中输入的值插入 MYSQL 数据库

JDBC-执行sql语句的API

JDBC基础02

从 JDBC SQL SELECT 中省略列是过早的优化吗?