While循环在ResultSet java中不起作用
Posted
技术标签:
【中文标题】While循环在ResultSet java中不起作用【英文标题】:While loop is not working in ResultSet java 【发布时间】:2018-03-09 17:00:04 【问题描述】:我正在使用以下代码从 sql 查询中获取结果:
try
stmt = con.createStatement();
String sql = "SELECT DISTINCT COLUMN_NAME FROM TABLE_NAME";
rs = stmt.executeQuery(sql);
String[] commaseperatedValues ;
while (rs.next())
//do something
log.debug(" SetString string is "+rs.getString(1));
if(",".contains(rs.getString(1)))
commaseperatedValues = rs.getString(1).split(",");
for(String str : commaseperatedValues)
list.add(str);
else
list.add(rs.getString(1));
catch
在日志中 ResultSet 打印为:
org.apache.commons.dbcp.DelegatingResultSet@f34e856
但它没有进入while循环。从 SQLDeveloper 它可以正确地给出结果。我得到了 (430) 个结果。但是 while 循环在这里不起作用。感谢您提供任何帮助。
【问题讨论】:
你怎么知道while
循环没有进入?
在进入循环之前使用调试器检查rs
的值。
您知道您的查询至少返回 1 行吗?
@diginoise 是的,正如我所说,而 sql developer 中的相同查询返回 430 个结果
向我们展示循环内部的代码。 Edit 您的问题 - 请不要在 cmets 中提供邮政编码或其他信息。
【参考方案1】:
你肯定会得到结果。它的对象。所以对象需要根据你的数据库列的名称进行切片。
例子:
String firstName = rs.getString("first_name");
在while...
里面就可以打印出来了
【讨论】:
rs.getString("first_name"); first_anme 和 column_name 一样吗? 是的。假设,您期望得到一个包含姓名、身份证、电话号码的结果。那么你可以通过: String name = rs.getString("name"); Int id = rs.getInt("id"); String phone = rs.getString("phone"); 在查询中发布的我只是得到一个特殊列结果 是的。因为你使用了 DISTINCT。它就是这样做的。它为您提供了该非常具体的列的结果。这不是你想要的吗? 在这里使用这样的东西有什么意义?:String name = rs.getString("COLUMN_NAME");因为我只是得到多行的结果,所以我需要对其进行迭代,对吗?以上是关于While循环在ResultSet java中不起作用的主要内容,如果未能解决你的问题,请参考以下文章