web-dev-qa-db-ja.com

結果セットを配列に格納する

私はこれが単純で、おそらく問題をまっすぐ見つめているはずだと知っていますが、もう一度私は立ち往生していて、コードの達人の助けが必要です。

jdbcの列から1行を取得し、それらを配列に入れようとしています。

私はこれを次のように行います:

public void fillContactList()
       {
           createConnection();
           try
           {
               Statement stmt = conn.createStatement();
               ResultSet namesList = stmt.executeQuery("SELECT name FROM Users");
               try
               {
                   while (namesList.next())
                   {
                       contactListNames[1] = namesList.getString(1);
                       System.out.println("" + contactListNames[1]);
                   }   
               }
               catch(SQLException q)
               {

               }
               conn.commit();
               stmt.close();
               conn.close();
           }
           catch(SQLException e)
           {

           }

creatConnectionは、明らかに実行することを実行する定義済みのメソッドです。別の結果セットがある間に結果セットを作成し、その列の文字列を配列に格納します。次に、それを適切に印刷します。そこにあることも確認してください。

問題は、列全体をcontactListNames [1]に格納することです。

column1の行1を[1]に格納するようにしたかった

次に、列1、行2を[2]に入力します。

私はループでこれを行うことができることを知っています。しかし、私はあまりにも単一の列から一度に1つの行だけを取ることを知りません。何か案は?

p.s iveはAPIを読みます、私はjsutが適合するものを見ることができません。

7
OVERTONE

配列を自動的に拡張するためのすべてのロジックを提供するArrayListを使用する必要があります。

List rowValues = new ArrayList();
while (namesList.next()) {
    rowValues.add(namesList.getString(1));
}   
// You can then put this back into an array if necessary
contactListNames = (String[]) rowValues.toArray(new String[rowValues.size()]);
24
Kevin Brock

次のような意味ですか?

int i = 0;
ResultSet rs = stmt.executeQuery("select name from users");
while (rs.next()) {
    String name = rs.getString("name");
    names[i++] = name;
}
0
Binil Thomas