sql >> Databasteknik >  >> RDS >> Mysql

Hantera stora poster i en Java EE-applikation

Det bästa är att inte lagra data i Javas minne på något sätt, men skriv bara den erhållna datan till svaret omedelbart allt eftersom data kommer in. Du måste också konfigurera MySQL JDBC-drivrutinen för att visa resultatuppsättningen rad för rad av Statement#setFetchSize() enligt MySQL JDBC-drivrutindokumentationen , annars cachas det hela i minnet.

Förutsatt att du är bekant med Servlets, här är ett kickoff-exempel som tar hänsyn till allt detta:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/plain");
    response.setHeader("Content-Disposition", "attachment;filename=numbers.txt"); // Force download popup.

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    Writer writer = response.getWriter();

    try {
        connection = database.getConnection();
        statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        statement.setFetchSize(Integer.MIN_VALUE);
        resultSet = statement.executeQuery("SELECT number FROM phonenumbers");

        while (resultSet.next()) {
            writer.write(resultSet.getString("number"));
            if (!resultSet.isLast()) {
                writer.write(",");
            }
        }
    } catch (SQLException e) {
        throw new ServletException("Query failed!", e);
    } finally { 
        if (resultSet != null) try { resultSet.close; } catch (SQLException logOrIgnore) {}
        if (statement != null) try { statement.close; } catch (SQLException logOrIgnore) {}
        if (connection != null) try { connection.close; } catch (SQLException logOrIgnore) {}
    }
}


  1. Förstå skillnaderna mellan tabell- och transaktions-API:er

  2. SQL Server 2008 Spatial:hitta en punkt i polygon

  3. hur man använder GILLA med kolumnnamn

  4. Använda Oracle JDeveloper med MySQL Database Service på Oracle Cloud Platform, del 1