2017-04-07 2 views
0

私はArrayListにJAVA - MySQLはArrayListの

public static ArrayList<String> checkNo() throws SQLException { 

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

    DbManager db = new DbManager(); 
    db.connect(); 
    String sql = "SELECT * from Category where id = " + idUser + " "; 

    Statement stmt = db.connect().createStatement(); 
    ResultSet rs = stmt.executeQuery(sql); 

    while (rs.next()) { 

     no.add(rs.getString("nameCategory")); 

    } 
    db.disconnect(); 
    return no; 
} 

でMySQL

String sqlSearch = "SELECT * from Item" 

および方法から、クエリを持っていると私は、ArrayListの中で、特定のユーザーからの彼のカテゴリを取得しますが、どのようにsqlSearchにこのカテゴリを渡すために???

SELECT * from Item where category ???? 
    data from ArrayList 

+0

プリペアドステートメントを使用することをお勧めします。 http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – dsharew

答えて

1

あなたは可能性ArrayListアイテムをループとのArrayListを返すこの

String inCondition = ""; 
boolean first = true; 
ArrayList<String> categories = checkNo(); 

for(String cat : categories){ 
    if(first){ 
     first = false; 
    } else { 
     inCondition += ","; 
    } 
    inCondition += cat; 
} 

String sqlSearch = "SELECT * from Item where category in (" + inCondition + ")"; 
+0

ありがとうございました! – dev

0

あなたcheckNo()方法のようにwhere句で使用するStringを構築します。このArrayListは1つのアイテムしか持たず、そのアイテムをArrayListから取得し、このようなクエリに渡すようです。

String category = list.get(i);  
"Select * from Item where category = "+category; 
+0

カテゴリが1つだけであるという前提は、関係するテーブルに関するこのような情報が少ないため、少し強くなっています...そうではありませんか? –

+0

私は、上記のクエリは、 'id'と一致するwhere節のために1つの結果しか返さないと考えています。 –

0

クエリはあなたにサンプルコードを与えている明確ではないので、ジュースは

if (count > 0) { 
     for (int i = 0; i < count; i++) { 
      ColumnName= no.get(i).getColumnName(); 
      } 
     getItemQuery = "FROM Item where category in (" +ColumnName + ")"; 
    } 
0

それを試してこれを行う方法はたくさんあり、

一つの方法は、2つの2つのクエリを組み合わせることです。

SELECT * from Item where category in (SELECT nameCategory from Category where id = idUser) 

これは、準備されたステートメントを使用することをお勧めします。