Java结果集最大列?
Posted
技术标签:
【中文标题】Java结果集最大列?【英文标题】:Java resultset max column? 【发布时间】:2012-02-16 11:52:09 【问题描述】:我对 Java 还很陌生,我想知道如何获取通过 mysql 查询返回的所有列。例如,
SELECT * FROM `login`
然后我有这个代码来返回结果:
while (rs.next())
for (byte i = 1; i < 10; i++)
result = result+" "+rs.getString(i);
由于动态 MySQL 查询,我希望 for 循环中的最大列数为 10。有没有一种简单的方法可以做到这一点?谢谢。
【问题讨论】:
【参考方案1】:尽管正如 duffymo 建议的那样,最好拼出您希望在查询中接收的列,但您可以使用 ResultSet 元数据来获取返回的列数:
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns =rsmd.getColumnCount();
while (rs.next())
for (byte i = 1; i <= numberOfColumns; i++)
result = result+" "+rs.getString(i);
【讨论】:
【参考方案2】:是的,您会限制返回的字段。这是一个 SQL 问题,而不是 Java 问题。将您的查询更改为以下内容:
select this, that, theothercolumn from mytable;
然后你可以使用它来动态限制它:
rs.getMetaData().getColumnCount()
【讨论】:
【参考方案3】:我建议不要使用 SELECT *。如果你知道你想要的列,把它们拼出来。这将使您的代码在面对列更改时更加健壮,并减少线路上的字节数。
【讨论】:
“减少线路上的字节数”到底是什么意思? 如果表中有 100 列,并且您选择 *,这意味着所有 100 列都会为每一行返回到您的计算机,无论您需要多少列。如果该表有一百万行,无论您是否需要,SELECT * 都会将它们全部带回。在客户端过滤它们是低效的。在 SQL 中进行过滤——它擅长的事情——并且只带回你需要的东西。 啊,好的!有那么一秒钟,我认为通过它的 column_number 和它的 column_name 访问记录之间可能存在差异......哈哈以上是关于Java结果集最大列?的主要内容,如果未能解决你的问题,请参考以下文章