有没有办法在使用 ORDER BY 的同时仍然使用 deleterow()?
Is there a way to use ORDER BY and still use deleterow()?
我使用的代码删除了数据库中的最后一行。根据我的阅读,一旦我使用 ORDER BY
它将结果设置回只读,这使得 deleterow()
或任何其他涉及更新数据库的事情都不可能。
是否有变通办法让我可以在 table ORDER BY Score DESC
的同时删除我需要删除的行?
String host = "jdbc:derby://localhost:1527/Scores";
String uName = "root";
String uPass= "root";
Connection con = DriverManager.getConnection( host, uName, uPass );
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQLd = "select * from ROOT.HISCORES ORDER BY Score DESC";
ResultSet dl = stmt.executeQuery( SQLd );
dl.last();
dl.deleteRow();
}
我觉得这不是一个好的做法。
与其将数据 SELECT
写入 Java 然后从那里删除,不如在数据库级别进行。执行 delete-select 并跳过大部分 Java 工作。
类似于:
DELETE FROM root.hiscores
WHERE Score = (SELECT MIN(hs.Score) FROM root.hiscores hs)
我使用的代码删除了数据库中的最后一行。根据我的阅读,一旦我使用 ORDER BY
它将结果设置回只读,这使得 deleterow()
或任何其他涉及更新数据库的事情都不可能。
是否有变通办法让我可以在 table ORDER BY Score DESC
的同时删除我需要删除的行?
String host = "jdbc:derby://localhost:1527/Scores";
String uName = "root";
String uPass= "root";
Connection con = DriverManager.getConnection( host, uName, uPass );
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQLd = "select * from ROOT.HISCORES ORDER BY Score DESC";
ResultSet dl = stmt.executeQuery( SQLd );
dl.last();
dl.deleteRow();
}
我觉得这不是一个好的做法。
与其将数据 SELECT
写入 Java 然后从那里删除,不如在数据库级别进行。执行 delete-select 并跳过大部分 Java 工作。
类似于:
DELETE FROM root.hiscores
WHERE Score = (SELECT MIN(hs.Score) FROM root.hiscores hs)