title: Select range of rows from PostgreSQL table
body: <p>I want to select range or rows from PostgreSQL table. I tried this code:</p>
  
  <pre><code> public List&lt;CustomersObj&gt; list(int firstRow, int rowCount, String sortField, boolean sortAscending) throws SQLException
          {
  
              String SqlStatement = null;
  
              if (ds == null)
              {
                  throw new SQLException();
              }
  
              Connection conn = ds.getConnection();
              if (conn == null)
              {
                  throw new SQLException();
              }
  
              int countrow = firstRow + rowCount;
              String sortDirection = sortAscending ? "ASC" : "DESC";
  
  // Oracle
      //        SqlStatement = "SELECT A.* "
      //            + " FROM (SELECT B.*, ROWNUM RN "
      //            + " FROM (SELECT Y.COMPONENTSTATSID, Y.NAME, Y.SERIALNUMBER, Y.WEIGHTKG, Y.ZONECAGE, Y.POWERWATT, Y.MANIFACTURECOMPANY, Y.UFORM, "
      //            + " Y.STATUS, Y.LOCATION, Y.HEATEMISIONSBTU, Y.PRODUCTIONENVIRONMENT, Y.STANDARTLIFETIME, Y.OPERATINGHAMIDITYRANGE, "
      //            + " Y.OPERATINGSYSTEM, Y.DATEDEPLOYED, Y.INTERFACETYPE, Y.TYPE, Y.COOLINGCAPACITYBTU, Y.DATEADDED, Y.DESCRIPTION "
      //            + " FROM COMPONENTWEIGHT X, COMPONENTSTATS Y WHERE X.COMPONENTSTATSID = Y.COMPONENTSTATSID AND Y.COMPONENTTYPEID = 3300 "
      //            + " ORDER BY %S %S) B "
      //            + " WHERE ROWNUM &lt;= ?) A "
      //            + " WHERE RN &gt; ?";
  // postgresql
              SqlStatement = "SELECT * FROM CUSTOMERS ORDER BY %S %S offset ? limit ? ";
  
              String sql = String.format(SqlStatement, sortField, sortDirection);
  
              PreparedStatement ps = null;
              ResultSet resultSet = null;
              List&lt;CustomersObj&gt; resultList = new ArrayList&lt;&gt;();
  
              try
              {
                  conn.setAutoCommit(false);
                  boolean committed = false;
  
                  ps = conn.prepareStatement(sql);
                  ps.setInt(1, countrow);
                  ps.setInt(2, firstRow);
  
                  resultSet = ps.executeQuery();
                  resultList = ProcessorArrayList(resultSet);
  
                  conn.commit();
                  committed = true;
  
              }
              finally
              {
                  ps.close();
                  conn.close();
              }
  
              return resultList;
          }
  </code></pre>
  
  <p>But when I use the pagination I get different number or rows. If I use the query from Oracle it's working fine. But when I want to use the query from PostgreSQL I get different result on every paginated page. Can you give some result how I can fix this? </p>