我正在尝试滚动我的所有数据库(对于某些操作,例如显示所有常量等),一切都很好,直到我删除了 SQL 数据库中间的一些行。我使用人员 ID 作为我的主键,并尝试使用该键滚动数据。personId 也是自动增量的。
这是删除之前我的数据库,我可以很好地滚动
+------------------------------+
| personId | name | family |
+------------------------------+
| 1 | name1 | family1 |
| 2 | name2 | family2 |
| 3 | name3 | family3 |
| 4 | name4 | family4 |
| 5 | name5 | family5 |
| 6 | name6 | family6 |
+------------------------------+
这是我删除后的数据库
+------------------------------+
| personId | name | family |
+------------------------------+
| 1 | name1 | family1 | <-- num2 is deleted
| 3 | name3 | family3 | <-- num4 is deleted
| 5 | name5 | family5 |
| 6 | name6 | family6 |
+------------------------------+
我已经尝试过:
1. use ROW_NUMBER() function in WHERE clause.
2. reset personId number and auto incremental.
3. sort data by date created in Unix-time.
但他们的逻辑是错误的,有的甚至行不通。
这是检索 SQL 数据库的特定行的代码。我的主要问题起源于哪里(=开始)。
Person类包括personId和姓名以及家族属性并有Getter和Setter方法。您可以在页面末尾看到它。
public static Person getRow(int rowNumber) throws SQLException {
String sql = "SELECT * FROM person WHERE personId = ?";
ResultSet rs = null;
try (
Connection con = DriverManager.getConnection(...)
PreparedStatement stmt = con.prepareStatement(sql);
) {
stmt.setInt(1, rowNumber);
rs = stmt.executeQuery();
if (rs.next()) {
Person bean = new Person(rowNumber, rs.getString("name"),
rs.getString("family"));
return bean;
} else {
System.err.println("No rows were found!");
return null;
}
} catch (SQLException e) {
System.err.println(e);
return null;
} finally {
if (rs != null) {
rs.close();
}
}
}
哔哔one
慕田峪9158850
相关分类