配列を戻り値にしたメソッドについて

[戻る]
海藤 2002/07/09(火) 17:36:25
海藤と申します。

さっそく質問なのですが、String変数を要素とした配列を引数と
して与えるとその要素であるString変数に値が入っている配列が
戻り値として戻ってくるというメソッドを作りたいのですが、
うまくいきません。
Vectorだとできてしまうのですが…

ソースコードは以下のようです。
(中略)
String All[] = {index1,index2,index3};
String sql = "select * from tableA where id=3";
All = searchDetail(sql,All);
System.out.println("配列要素 = " + All[0]);//こちらは表示されます。
System.out.println("String変数 = " + index1);//こちらは変数部分が表示されませ
ん。でも、こちらも表示させたいです。
(中略)
public String[] searchDetail(String sql,String[] All){
  try{
    open();
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    while(rs.next()){
       for(int k=0; k < All.length ;k++){
         All[k] = rs.getString(k + 1);
       }
    }
    rs.close();
    stmt.close();
    close();
    }
    catch(SQLException ex){
     System.out.println("SQLError : " + ex);
     System.out.println("SQL文 : " + sql);
    }
    catch(java.lang.Exception ex){
     System.out.println("Error : " + ex);
    }
    return All;
}
(後略)

となっているのですが…ちなみに同様のプログラムをStringをVector
に変えて行ってみると、表示部分で両方とも表示されるのですが…

よろしくお願いします。

dairygoods 2002/07/10(水) 11:56:21
index1にAll[0]と同じ内容が入っていることを期待していますか?

> All[k] = rs.getString(k + 1);

これは、All[k]に入っているindex1を捨てて
別の文字列を入れるという意味です。
index1自体を変更するものではありません。

海藤 [HomePage] 2002/07/10(水) 17:54:11
[[解決]]
回答ありがとうございます。
うーん、VectorとStringではぜんぜん違うようですね…配列にしてしまえば
Java.util.VectorもJava.lang.Stringも同じとか考えていたのですが、ぜんぜん
見当違いなかんがえだったようです。

どうもありがとうございました。

古いスレッドには追加発言できません。