sql >> Databasteknik >  >> RDS >> Mysql

Få åtkomst till data från servlet

Först och främst rekommenderar jag inte att använda en servlet för detta. Se svaren från aioobe och mdma för rätt tillvägagångssätt. Men om det verkligen inte finns något annat alternativ, fortsätt läsa:

Skriv bara uppgifterna till svaret omedelbart allt eftersom data kommer in. Lagra inte allt i Javas minne. Så i princip:writer.write(resultSet.getString("col")) . Vidare kommer MySQL JDBC-drivrutinen som standard att cache allt i Javas minne innan det ger något till ResultSet#next() . Du vill låta den ge data omedelbart rad för rad genom att ställa in Statement#setFetchSize() enligt MySQL JDBC-drivrutindokumentationen .

Här är ett kickoff-exempel, förutsatt att du vill mata ut data i CSV-format:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/csv");

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    PrintWriter 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 col1, col2, col3 FROM tbl");

        while (resultSet.next()) {
            writer.append(resultSet.getString("col1")).append(',');
            writer.append(resultSet.getString("col2")).append(',');
            writer.append(resultSet.getString("col3")).println();
            // PS: don't forget to sanitize quotes/commas as per RFC4130.
        }
    } 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. Array i SQL Query?

  2. Postgresql aggregerad array

  3. Ta bort MySQL Ubuntu 14.04 LTS helt

  4. Importera MySQL-databas till en MS SQL Server