2012-03-06 4 views
0

私はJavaに慣れていませんが、MatlabとCの経験は、変数をループ内に埋め込む前に配列変数のメモリを事前に割り当てるように私に訓練しました(Forループ、Whileループなど)。データベースのResultSetデータを格納するためにJava配列のサイズを初期化する方法は?

自分自身がResultSetを使用してJavaのデータベースからデータを取得しています。クイック検索では、ResultSet内の行数を取得する方法がありません。したがって、基本的な質問:ResultSetクエリの結果を格納することを目的としたJava変数の配列長を、そのResultSetの行数を知らなくても事前に割り当てる方法は?

従来の知恵は何ですか?たとえば、ResultSetに2列のデータが含まれている場合、各列を個別のJava配列変数に配置する方法はありますか?

UPDATE 1:いくつかの背景 - ResultSetによって返されたすべてをオブジェクトに入れて、このオブジェクトのコンテンツを介してJavaプログラムと通信する非Java(ActionScriptなど)プログラムにそのオブジェクトを渡す必要があります。 。

更新2:Javaから非Java(ActionScriptなど)への変換ルールに関するドキュメントです。おそらく http://help.adobe.com/en_US/LiveCycleDataServicesES/3.1/Developing/WSc3ff6d0ea77859461172e0811f00f6eab8-7ffdUpdate.html

+0

Javaの方法は、結果セットを 'Collection'インスタンスに取得することです。最も好ましいのは' ArrayList'です。手前でサイズを知る必要はありません。オブジェクトごとに行を作成し、リストに追加してください。 –

+0

サイズがわかっている場合は、配列を使用する必要があります。サイズはわからないので、必要に応じてCollectionクラスを使用してください。 –

+0

プログラム間の通信をどのように処理しているかわかりませんが、リストを使用して配列と同じことを行うこともできます。最悪のシナリオでは、リストを配列に変換します(リストではそのサイズを見ることができます)。 – Marcelo

答えて

3

なぜそれを配列に追加しますか? ResultSetを簡単に繰り返し、結果を適切なObjectに変換してArrayListに追加すると、配列に追加するよりもはるかに柔軟性が得られます。

実際に行数が必要な場合は、元のクエリを実行する前にcountクエリを実行する必要があると思います。

EDIT:あなたはリンクのドキュメントから、それはあなたがJavaのArrayListを使用する場合は、代わりにあなたはJava配列を使用した場合、あなたが取得したいのActionScript ArrayオブジェクトのActionScriptのmx.collections.ArrayCollectionオブジェクトで終わるだろうと思われます。使用する1つお選びいただけ、あなたのActionScriptコードを変更することができない場合だけList -> arrayを変換...:

マルセロが言ったよう
List<MyObject> myList = new ArrayList<MyObject>(); 
... populate myList from ResultSet ... 
MyObject[] array = myList.toArray(new MyObject[myList.size()]); 
+0

私はこれが正しい答えだと思いますが、私はそれを記入するためのより多くの助けが必要です。私はそれに対処するために、次のより焦点を絞ったスレッドを作成しました:http://stackoverflow.com/questions/9585764/newbie-attempt-to-use- java-arraylist-to-store-resultset-from-databaseから取得しました。 – ggkmath

0

は、ArrayListのがこの問題のためのより良いオプションですが、代わりにCOUNTを実行しますどのくらいの行が返されたかを調べるには、

rs.last();を使用します。 rs.getRow();

次に、の後の最初の行に戻ります。

関連する問題