resultset和jtable-r2xml忽略第一个值

2cmtqfgy  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(288)

我在netbeans中用java编写了一个代码,用数据库的结果在表中插入信息,但是返回的第一个值没有应用到表中,有人能帮我吗?
表中只显示三个数据:屏幕截图1
如果我直接在phpmyadmin上运行相同的sql,它将返回以下四个数据:屏幕截图2
sql在java中运行的代码:

public ResultSet getInfos(){
        VIEW.Inicio Inicio = new VIEW.Inicio();
        String SQL = "SELECT * FROM tb_denuncia WHERE status = 1 ORDER BY prioridade DESC, id ASC LIMIT ?";

        try {
            PreparedStatement stmt = this.getConexao().prepareStatement(SQL);
            stmt.setInt(1, 10);

            ResultSet res = stmt.executeQuery();

            if(res.next()){
                return res;
            } else {
                return null;
            }
        } catch (SQLException erro) {
            throw new RuntimeException(erro);
        }
    }

表中箭头所在的代码:

Tabela_TOP10.setModel(DbUtils.resultSetToTableModel(res));

有人知道应该怎么做才能显示所有的价值观吗​​返回?

xam8gpfp

xam8gpfp1#

你还没有包括你的密码 DbUtils.resultSetToTableModel() 方法,但我强烈怀疑它是这样的:

public YourTableModel resultSetToTableModel(ResultSet resultSet) {
    YourTableModel tableModel = new YourTableModel();
    while (resultSet.next()) {
        // read a row out of the result set and add it to the table model.
    }
    // ...
}

注意呼叫 resultSet.next() . 这是一种标准的方法来处理 ResultSet :检查是否有下一行要读取(这会将结果集移到下一行),如果有,则从该行中读取值,对其进行处理,然后返回以处理更多的行。
还要注意的是 getInfos() 方法也调用 .next() 在结果集传递给 DbUtils.resultSetToTableModel() . 所以在代码开始处理结果集中的任何数据之前, .next() 已经有两次了。这会导致它跳过第一行。
我真的不明白为什么你的代码里有这个:

if(res.next()){
                return res;
            } else {
                return null;
            }

把它换成

return res;

相关问题