java - 结果集元数据不返回第一行

标签 java sql jdbc metadata

此代码返回除第一行之外的每一行。我看不出它有什么问题?我怎样才能让它包括第一个?

stmt = con.createStatement();  

ResultSet res=stmt.executeQuery("SELECT * FROM Orders ORDER BY OrderID");

if (res.next())
{
    ResultSetMetaData rsmd=res.getMetaData();
    int columnCount=rsmd.getColumnCount();
    for (int i = 1; i<= columnCount; i++) {
        columnHeading=columnHeading+"\t"+rsmd.getColumnName(i); 
    }
    System.out.println(columnHeading);
    while(res.next()) {
        for (int i= 1; i<= columnCount; i++) {                            
            System.out.print("\t"+res.getString(i));
        }
    System.out.println("\n");
    }
}

最佳答案

您正在调用 res.next() 两次 - 一次在这里:

if (res.next())

这里:

while (res.next())

if 语句和 while 语句之间,您正在“查看”第一行 - 但当您进入 while 循环体,你已经在第二行了。

最简单的解决办法可能是改变:

while (res.next())
{
}

致:

do
{
} while (res.next());

关于java - 结果集元数据不返回第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004306/

相关文章:

java - 什么时候需要 Some<E extends Some<E>> 而不是 Some<E extends Some>?

java - 有没有办法在 Scala 中的方法参数中声明一组指定的值?

sql - 如何获取该公司未在 Sql 中记录的每个公司的日期?

sql - SQL Server 的奇怪行为 - 随机选择

sql - 是否可以将一个表中的 SELECT 与另一表中的另一个 SELECT 连接到一行中?

java - UIMA 环境中的 Ruta。在纯 Java 中使用预定义的集合/集合和词典

java - JTable 在更改时加载值,加载时显示进度条

java - 无法执行 JDBC 批量更新

java - 使用 JDBC 设置高 maxPoolSize 时需要注意哪些风险/因素

java - 将结果数组从类返回到其他类 java