繁体   English   中英

用 Java 从 MySQL 中检索记录

[英]Retrieving records from MySQL in Java

我正在用 Java 构建一个应用程序来从 MySQL 数据库中检索数据。 执行查询后,我得到一个 ResultSet 并执行以下操作以提取记录:

while (rs.next())
        {
            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }
            result.add(row.toString());
            row.clear();
        }

其中rs = ResultSet 和rm = ResultSetMetaData

问题是我必须做result.add(row.toString()); 而不仅仅是result.add(row); (我想用它创建一个二维 ArrayList)。 否则我会得到空的结果。

我试过把row.clear(); 在开始时,在for循环之前,但这导致我的所有结果都被最后一条记录的多个实例填充。 就像直到最后,当它等于最后一条记录时才将添加到结果中 在将 ArrayList作为元素添加到另一个 ArrayList 之前,我是否需要“提交”它? 如果是这样,如何? 另外,出于好奇,为什么.toString() 的工作方式不同?

通过添加 row.toString(),您正在创建一个新的 String 对象以添加到结果中。

另一方面,通过添加行,您将相同的对象添加到结果中,因此,每次调用 row.clear() 时,它都会清空结果中的所有行。

你应该做的是在for循环之前创建一个新的行对象,不要做row.clear()。 下面是一个例子。

while (rs.next())
        {
            row = new ArrayList();

            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }

            result.add(row);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM