sql >> Database >  >> RDS >> Mysql

Toegang tot gegevens van servlet

Allereerst raad ik af om hiervoor een servlet te gebruiken. Zie de antwoorden van aioobe en mdma voor de juiste aanpak. Maar als er echt geen andere optie is, lees dan verder:

Schrijf de gegevens gewoon onmiddellijk wanneer de gegevens binnenkomen. Sla niet alles op in het geheugen van Java. Dus eigenlijk:writer.write(resultSet.getString("col")) . Verder zal het MySQL JDBC-stuurprogramma standaard alles in het geheugen van Java cachen voordat iets wordt gegeven aan ResultSet#next() . U wilt de gegevens onmiddellijk rij voor rij laten weergeven door de Statement#setFetchSize() volgens de MySQL JDBC-stuurprogrammadocumentatie .

Hier is een voorbeeld van een aftrap, ervan uitgaande dat u de gegevens in CSV-indeling wilt uitvoeren:

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. SQL Server-variabel bereik in een opgeslagen procedure

  2. Selecteer laatste rij in MySQL

  3. Bash-script om waarden in MySQL in te voegen

  4. Mysql resulteert in PHP - arrays of objecten?