在我的 Java 程序中,我使用 Mysql 数据库。在用 Java 实现每个查询之前,我使用 SQLDeveloper 对其进行测试,以确保其有效。
在 SQLDeveloper 中,以下查询完美运行:
UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%')
SET t.filter = 'BANNED'
WHERE t.filter IS NULL
(它只是在标题列表中将包含禁止词(即亵渎性内容)的标题标记为禁止。
现在,当我用 Java 实现此查询时,代码运行完美(没有错误,没有异常),但实际上数据库没有更新,因为它使用的是 SQLDeveloper。这是代码:
String query = "UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') SET t.filter = 'BANNED' WHERE t.filter IS NULL;";
PreparedStatement preparedStatement = connect.prepareStatement(query);
preparedStatement.executeUpdate();
preparedStatement.close();
我创建了与此类似的其他查询,并且它们有效。我错过了什么吗?
最佳答案
您需要使用 Connection.commit() 提交 SQL 语句
String query = "UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') SET t.filter = 'BANNED' WHERE t.filter IS NULL;";
PreparedStatement preparedStatement = connect.prepareStatement(query);
preparedStatement.executeUpdate();
connect.commit();
preparedStatement.close();
关于java - MYSQL 更新表不适用于 Java 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26096227/