Я использую JDBC с MySQL-разъем-Java-6.0.2.jar, и, если я не делаю что-то неправильно, я думаю, что реализация DatabaseMetaData.ownDeletesAreVisible и DatabaseMetaData.deletesAreDetected действует как-то непоследовательно между собой.DatabaseMetaData.ownDeletesAreVisible против DatabaseMetaData.deletesAreDetected Противоречия
Вот что говорит о спецификации JDBC ownDeletesAreVisible:.
"... Если удаленная строка удаляется или заменяется на пустую строку, метод DatabaseMetaData.ownDeletesAreVisible (интермедиат типа) возвращает истину, он возвращается ложь, если объект ResultSet содержит еще удаляемой строки, что означает, что удаление не видно как изменение ResultSet объектов данного типа ... «
И о deletesAreDetected:
» .. . МЕТ спосо deletesAreDetected возвращает ложь, если строка удаляется из объекта ResultSet удаляется из него и верно, если удаляется строка заменяется пустой или недопустимой строки ... "
Я добавил выходы в качестве комментариев:
import static java.sql.ResultSet.CONCUR_UPDATABLE;
import static java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE;
import java.sql.*;
public class Deletions {
public static void main(String[] args) throws SQLException {
try (Connection conn = DBUtils.getConnection();
Statement stmt = conn.createStatement(TYPE_SCROLL_INSENSITIVE, CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("select * from book")) {
DatabaseMetaData dbmd = conn.getMetaData();
//prints false
System.out.println(dbmd.ownDeletesAreVisible(TYPE_SCROLL_INSENSITIVE));
// prints false. Controversy?
System.out.println(dbmd.deletesAreDetected(TYPE_SCROLL_INSENSITIVE));
// Prints everything including foo
printAll(rs);
// deletes foo
while (rs.next()) {
String title = rs.getString(2);
if (title.equalsIgnoreCase("foo")) {
rs.deleteRow();
}
}
// Prints everything without foo
printAll(rs);
}
}
private static void printAll(ResultSet rs) throws SQLException {
rs.beforeFirst();
while (rs.next()) {
System.out.println(rs.getString(2));
}
rs.beforeFirst();
}
}
Вы должны действительно переместить свои комментарии в текст, что значительно облегчает чтение. –
Благодарим вас за советы. Готово. –