首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何初始化java数组大小来存储数据库ResultSet数据?

如何初始化java数组大小来存储数据库ResultSet数据?
EN

Stack Overflow用户
提问于 2012-03-06 18:48:38
回答 2查看 1.6K关注 0票数 0

我刚接触java,但我在Matlab和C方面的经验训练我总是在将数组变量填充到循环中(例如for循环、While循环等)之前为该变量预先分配内存。

我发现自己正在使用ResultSet从Java语言的数据库中检索数据。快速搜索一下就会发现,如果不逐个遍历,就无法获得ResultSet中的行数。因此,基本问题是:在不知道ResultSet中的行数的情况下,如何预先分配用于存储ResultSet查询结果的Java变量的数组长度?

传统的观点是什么?例如,如果ResultSet包含两列数据,如何将每一列放入单独的Java数组变量中?

更新1:一些背景知识--我需要将ResultSet返回的所有内容都放到一个对象中,这样我就可以将该对象传递给一个非Java (例如ActionScript)程序,该程序通过该对象的内容与Java程序进行通信。

更新2:这是关于从Java到非Java的转换规则的文档(例如ActionScript)。也许是http://help.adobe.com/en_US/LiveCycleDataServicesES/3.1/Developing/WSc3ff6d0ea77859461172e0811f00f6eab8-7ffdUpdate.html

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-06 18:55:03

为什么要将它添加到数组中?您可以轻松地遍历ResultSet,将结果转换为适当的Object,并将它们添加到ArrayList...为您提供比添加到数组中更多的灵活性。

但是,如果您确实需要行数,我认为您需要在运行原始查询之前运行一个count查询。

编辑:从您链接的文档中可以看出,如果您使用Java数组,您最终会得到一个ActionScript mx.collections.ArrayCollection对象,而不是您使用Java数组时得到的ActionScript Array对象。你选择使用哪一个,如果你不能改变你的ActionScript代码,只需要转换List -> array ...:

代码语言:javascript
运行
复制
List<MyObject> myList = new ArrayList<MyObject>();
... populate myList from ResultSet ...
MyObject[] array = myList.toArray(new MyObject[myList.size()]);
票数 3
EN

Stack Overflow用户

发布于 2012-03-06 18:59:58

正如马塞洛所说,对于这个问题,ArrayList是一个更好的选择,但是您可以使用以下命令来欺骗它,而不是执行COUNT查询来知道返回了多少行:

rs.last();rs.getRow();

然后返回到后面的第一行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9582127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档