Java,MySQL特定查询什么都不返回

时间:2015-11-30 16:41:26

标签: java mysql

我试图选择表中单个列的所有不同值,但是它不会一直返回。我检查过的事情:

  1. 权限 - 帐户I使用权限可以执行所有操作
  2. 查询正确 - 我打印出查询并在phpMyAdmin
  3. 中运行
  4. 实际已连接 - 它正在连接到正确的数据库,因为" SELECT * FROM users"作品。
  5. 例外 - 检查了一般例外,但没有任何例外。
  6. 代码:

    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是在函数外打印的列数。显然,查询没有获得不同的值,这只是我尝试的一个更简单的查询。有任何想法吗?感谢

1 个答案:

答案 0 :(得分:0)

ResultSet中的列从1开始编制索引,getColumnCount返回所选列的数量。

因此,您需要将for循环替换为1到length,而不是独占:

for (int i = 1; i <= length; i++) { // <-- inclusive here
    System.out.println(rs.getString(i));
}