我试图选择表中单个列的所有不同值,但是它不会一直返回。我检查过的事情:
代码:
public ResultSet execute(String sql) {
try {
Statement stmt = conn.createStatement();
ResultSet rs = null;
System.out.println(sql);
if (stmt.execute(sql)) {
rs = stmt.getResultSet();
}
ResultSetMetaData meta = rs.getMetaData();
int length = meta.getColumnCount();
System.out.println("Print results");
while (rs.next()) {
for (int i=1; i< length; i++) {
System.out.println(rs.getString(i));
}
}
System.out.println("DONE");
return rs;
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQL: " + e.getSQLState());
System.out.println("2: " + e.getMessage());
System.out.println("3: " + e.getErrorCode());
}
System.out.println("Nothing found");
return null;
}
打印出来:
连接数据库SELECT userName
FROM users
打印结果DONE 1
1是在函数外打印的列数。显然,查询没有获得不同的值,这只是我尝试的一个更简单的查询。有任何想法吗?感谢
答案 0 :(得分:0)
ResultSet
中的列从1开始编制索引,getColumnCount
返回所选列的数量。
因此,您需要将for循环替换为1到length
,而不是独占:
for (int i = 1; i <= length; i++) { // <-- inclusive here
System.out.println(rs.getString(i));
}