sql >> Databáze >  >> RDS >> Mysql

Přístup k datům ze servletu

Za prvé, nedoporučuji k tomu používat servlet. Podívejte se na odpovědi aioobe a mdma pro správný přístup. Ale pokud opravdu není jiná možnost, tak pokračujte ve čtení:

Stačí ihned napsat data do odpovědi jak data přicházejí. Neukládejte vše do paměti Javy. Takže v podstatě:writer.write(resultSet.getString("col")) . Ovladač MySQL JDBC dále ve výchozím nastavení uloží do mezipaměti vše v paměti Java, než poskytne cokoli funkci ResultSet#next() . Chcete, aby to okamžitě poskytovalo data řádek po řádku nastavením Statement#setFetchSize() podle dokumentace ovladače MySQL JDBC .

Zde je příklad zahájení, za předpokladu, že chcete výstup dat ve formátu CSV:

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. Zaseknutý přístup odepřen pro uživatele 'root'@'localhost' - Terminál, Mac

  2. Převod výsledků Select do skriptu Insert - SQL Server

  3. Filtrování na alias v mysql

  4. Jak opravit chybějící pole v křížovém dotazu v Accessu