Java:如果ArrayList中不存在值,则删除mysql行

问题描述 投票:0回答:2

我的桌子:

-----------------
|name   |   age |
-----------------
 john        45
 maria       31
 george      24
 Toby        46
 Emmalee     55
 Simeon      16
 Gustavo     71
 Hamza       64
      ...

好吧,假设我有一个内部有40个整数但有随机整数的ArrayList。我想运行一个查询,它将删除我表中的所有行,但不会删除那些年龄在我的arraylist中的人...我该怎么做?对不起我的英语不好。我在用谷歌翻译

我的代码:

List<Integer> myList;
private static final String databaseQuery = "DELETE FROM users WHERE age ??";

try (Connection con = Database.getInstance().getLocalConnection();
        PreparedStatement ps = con.prepareStatement(databaseQuery)) 
{
    ps.executeUpdate();
}
catch (SQLException e) 
{
    e.printStackTrace();
}
java mysql sql
2个回答
3
投票
try (PreparedStatement pstmt = connection.prepareStatement(
        "DELETE FROM MyTable WHERE age NOT IN (?)")) {
    Object[] ageArray = ageList.toArray();
    Array array = connection.createArrayOf("INT", ageArray);
    pstmt.setArray(1, array);
    int updateCount = pstmt.executeUpdate();
}

有一个SQL Array类用于此目的。


0
投票

我可以用一些逻辑思维来帮助你。那么你需要做的第一件事是查询数据库(从tableName中选择*)并保存结果,接下来你需要嵌套两个周期,一个是查询结果,另一个是所说的ArrayList(同时,do while或a然后在每次迭代中你需要将你所在的行与ArrayList的迭代进行比较,如果匹配则你应该从DB中删除该元素。希望我能用一些逻辑来帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.