2016-08-11 23 views
0

INステートメント内でSQLクエリとして渡す文字列を作成しようとしています。ArrayList <Objects[]> SQL INステートメントで使用する文字列

ArrayList<Object[]> arrayList = new ArrayList<Object[]>(); 

    List<String> strings = new ArrayList<>(arrayList .size()); 
    for (Object object : arrayList) { 
     strings.add(Objects.toString(object, null)); 
    } 

    System.out.println("askldnlkasdn"+strings); 

これはまだ代わりに、私はまたのStringBuilderとのStringUtilsを使用して を試してきた実際の文字列

askldnlkasdn[[Ljava.lang.Object;@7bb11784, [Ljava.lang.Object;@33a10788, [Ljava.lang.Object;@7006c658, [Ljava.lang.Object;@34033bd0, [Ljava.lang.Object;@47fd17e3, [Ljava.lang.Object;@7cdbc5d3, [Ljava.lang.Object;@3aa9e816, [Ljava.lang.Object;@17d99928, [Ljava.lang.Object;@3834d63f, [Ljava.lang.Object;@1ae369b7] 

のメモリ位置を出力します。しかし、物事は動作しないようです。

問題がどこにあるかについての入力はありますか?

+0

投稿したコードが間違っています。 'ArrayList'は' Object [] 'のものですが、反復すると' Object'だけに変わります。私はタイプミスだと思いますか? –

+0

基礎となるオブジェクトの実際の型は何ですか?適切なクラスでtoString()メソッドをオーバーライドして、正常に動作するようにすることができます。 – JavaHopper

答えて

0

これは役立つかもしれない新しいコードで、

// Data of Array of Object for test the Code 
    Object[] a = new Object[1]; 
    a[0] = "Hello"; 
    Object[] b = new Object[1]; 
    b[0] = "Friend"; 
    Object[] c = new Object[1]; 
    c[0] = "This is"; 
    Object[] d = new Object[1]; 
    d[0] = "Just Test"; 

    // The Array List of objects and the data entry 
    ArrayList<Object[]> arrayList = new ArrayList<Object[]>(); 
    arrayList.add(a); 
    arrayList.add(b); 
    arrayList.add(c); 
    arrayList.add(d); 

    // New List of strings 
    List<String> strings = new ArrayList<>(arrayList .size()); 


    // The Process of adding the data from array list of objects to the strings 
    for(int i = 0; i < arrayList.size(); i++){ 
     strings.add((String) arrayList.get(i)[0]); 
    } 

    // Just for print the data to console 
    for(int i = 0 ; i < strings.size(); i++){ 
     System.out.println(strings.get(i)); 
    } 

    System.out.println("askldnlkasdn "+strings.get(0)); 

私は、問題を解決お知らせくださいいない場合は、複数の次元配列のためにそれを使用することができます願っています。

+0

私は以前arrayListをループしていると思っていました。しかし、以前は代替ソリューションを探していました。私は他人が提案したように多くの解決策を試しました。私は最終的に問題を解決するためにループメソッドを使用しました。 – Betafish

1

あなたはSQL特定のJava Arrayを使用することができ、あなたのオブジェクト

1

にtoStringメソッドをオーバーライドする必要があります。

try (PreparedStatement stmt = connection.prepareStatement("... IN (?) ...")) { 
    Object[] elements = ... 
    stmt.setArray(1, connection.createArray("TEXT", elements)); 
    stmt.executeUpdate(); 
} 
1

あなたが持っている問題は、暗黙のうちにあなたのArrayList内部Object要素のtoString()方法を使用していることです。デフォルトでは、このメソッドはObjectのクラスとアドレスを返します。リスト内で使用するすべてのクラスでtoString()メソッドをオーバーライドする必要があります。

0

あなたは、このコード

ArrayList<String> arrayList = new ArrayList<>(); 

    List<String> strings = new ArrayList<>(arrayList .size()); 
    for (Object object : arrayList) { 
     strings.add(Objects.toString(object, null)); 
    } 

    System.out.println("askldnlkasdn"+strings); 

それとも、それが特定の目的のためにオブジェクト欲しいと同様に、Stringとして保存することができますか?

+0

はい、オブジェクトの使用は特定の目的に使用されました。 – Betafish

+0

私は新しいanswareを投稿します – MaJiD

関連する問題