Mysql
 sql >> база данни >  >> RDS >> Mysql

Достъп до данни от сървлет

Първо, не препоръчвам да използвате сървлет за това. Вижте отговорите на aioobe и mdma за правилния подход. Но ако наистина няма друга опция, продължете да четете:

Просто напишете данните в отговоранезабавно когато данните постъпват. Не съхранявайте всичко в паметта на Java. Така че основно:writer.write(resultSet.getString("col")) . Освен това MySQL JDBC драйверът по подразбиране ще кешира всичко в паметта на Java, преди да даде нещо на ResultSet#next() . Бихте искали да му позволите да предоставя данните незабавно ред по ред, като зададете Statement#setFetchSize() съгласно документацията на MySQL JDBC драйвер .

Ето един начален пример, като приемем, че искате да изведете данните във формат 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ImportError:Няма модул с име MySQLdb

  2. Отпечатайте действителната заявка, която MySQLdb изпълнява?

  3. Неправилен ключов файл с MySQL

  4. Грешка 508 - Достигнат е ограничението на ресурсите (php+mysql+jquery) сайт

  5. Как да изберете записи с дублиращи се само едно поле и всички други стойности на полета?