【问题标题】:Return list of query in Java 1 dimensional e.g., 1 row is returned返回 Java 1 维查询列表,例如返回 1 行
【发布时间】:2014-07-27 05:24:40
【问题描述】:

我在遍历所有记录时遇到了很多麻烦。也许,通过阅读我的代码,有人可以提供帮助。

private String saveData(Handle handle, String username, String name, String prof, String table) {
    String sqlCommand;

    Map<String, Object> userResults;

    for (Integer tableNum = 1; tableNum < 5; tableNum++) {

        //query all tables
        sqlCommand = String.format("SELECT varname FROM s" + tableNum.toString());
        userResults = handle.createQuery(sqlCommand)
                .bind("username", username)
                .first();

        //attempt to ierate all records
        for (Map.Entry<String, Object> entry : userResults.entrySet()) {
            Object obj = entry.getValue(); // doesnt have .get(string) as below
        }

        //get the desired field
        logger.debug("Results: " + userResults.toString());
        String varname = (String) userResults.get("varname");
        if ((varname.toLowerCase()).matches(name.toLowerCase())) 
            return "";
    }

    //save data
    return name;
}

如何遍历表的每条记录?

【问题讨论】:

  • 这不是在 Java 中查询数据库的标准方法,因此您至少应该解释一下 Handle 是什么以及它是如何工作的。
  • 用 Java 查询数据库的标准方法是什么?
  • 使用 JDBC(或通过 JPA 等更高级别的框架)。

标签: java mysql iteration


【解决方案1】:

你说这适用于第 1 行。您无法转到下一行,因为您的句柄中有 .first(); 并且您还没有尝试获取下一条记录。修改您的查询 - 文档 here 说您可以使用 .list(maxRows);

【讨论】:

  • 没有。要使用的正确类型的句柄属性是 .list(maxRows);不是 .getResultList()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多