2017-04-07 70 views
0

我有查詢從MySQLJAVA - MySQL的一個ArrayList

String sqlSearch = "SELECT * from Item" 

和方法與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; 
} 

我從特定的用戶在ArrayList中得到他的範疇,但如何將這些類別sqlSearch傳遞???

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

任何想法?

+0

建議使用預準備語句。 http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – dsharew

回答

1

你可以通過ArrayList項目環,並建立一個Stringwhere子句中使用這樣的

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()方法返回一個ArrayList。它看起來像這個ArrayList將只有一個項目,從ArrayList中獲取該項目並將其傳遞給像這樣的查詢。

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

只有一個類別的假設有點強烈,有關表格的信息很少......是不是? –

+0

我做了這樣的假設,認爲上述查詢只會返回1個結果,因爲Where子句與'id'匹配 –

0

由於您的查詢尚不清楚我給你一個示例代碼,強制嘗試

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

有這樣做的許多方面,

一種方法是兩者結合起來的兩個查詢:

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

的建議它能夠更好地使用準備好的聲明。

相關問題