Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dostęp do danych z serwletu

Przede wszystkim nie polecam do tego używać apletu. Zobacz odpowiedzi aioobe i mdma, aby uzyskać właściwe podejście. Ale jeśli naprawdę nie ma innej opcji, czytaj dalej:

Po prostu wpisz dane do odpowiedzi natychmiast w miarę napływania danych. Nie przechowuj wszystkiego w pamięci Javy. A więc po prostu:writer.write(resultSet.getString("col")) . Ponadto sterownik MySQL JDBC domyślnie buforuje wszystko w pamięci Javy przed przekazaniem czegokolwiek funkcji ResultSet#next() . Chcesz, aby natychmiast przekazywał dane wiersz po wierszu, ustawiając Statement#setFetchSize() zgodnie z dokumentacją sterownika MySQL JDBC .

Oto przykład startowy, zakładając, że chcesz wyprowadzić dane w formacie 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. Jak przesłać wiele obrazów za pomocą codeignitera

  2. hierarchia mysql samodołączanie, pobieranie wszystkich podkategorii

  3. wybierz kolumnę jako prawda / fałsz, jeśli id ​​istnieje w innej tabeli

  4. Używanie Workbencha do łączenia się ze zdalnym serwerem MySQL przez tunel SSH

  5. Uzyskaj wielokąty zbliżone do szerokości geograficznej, długiej w MySQL