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

时间:2017-12-19 16:07:02

标签: java mysql sql

我的表:

-----------------
|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();
}

2 个答案:

答案 0 :(得分: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类用于此目的。

答案 1 :(得分:0)

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