Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA-MySQL数组列表_Java_Mysql_Arraylist - Fatal编程技术网

JAVA-MySQL数组列表

JAVA-MySQL数组列表,java,mysql,arraylist,Java,Mysql,Arraylist,我有来自MySQl的查询 String sqlSearch = "SELECT * from Item" 与ArrayList一起使用 public static ArrayList<String> checkNo() throws SQLException { ArrayList<String> no= new ArrayList<String>(); DbManager db = new DbManager(); db.c

我有来自MySQl的查询

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
项,并构建一个
字符串
,在
where
子句中使用,如下所示

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 + ")";
条件字符串=”;
布尔值优先=真;
ArrayList categories=checkNo();
用于(字符串类别:类别){
如果(第一){
第一个=假;
}否则{
条件+=“,”;
}
条件+=猫;
}
String sqlSearch=“从类别位于(“+inCondition+”)中的项目中选择*”;
您的
checkNo()
方法返回一个ArrayList。看起来这个ArrayList只有一个项,从ArrayList中获取该项并像下面这样将其传递给查询

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

由于您的查询不清楚,我给您一个示例代码,请尝试一下

if (count > 0) {
        for (int i = 0; i < count; i++) {
            ColumnName= no.get(i).getColumnName();
            }
        getItemQuery = "FROM Item where category in (" +ColumnName + ")";
    }
if(计数>0){
for(int i=0;i
有很多方法可以做到这一点

一种方法是两个组合两个查询:

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

正如建议的那样,最好使用准备好的语句。

建议使用准备好的语句。假设类别只有一个是有点强的,因为涉及的表格信息如此之少。。。不是吗?我假设上面的查询只返回1个结果,因为where子句与'id'匹配
SELECT * from Item where category in (SELECT nameCategory from Category where id = idUser )