Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy cập dữ liệu từ servlet

Trước hết, tôi không khuyên bạn nên sử dụng một servlet cho việc này. Xem câu trả lời của aioobe và mdma để có cách tiếp cận phù hợp. Nhưng nếu thực sự không có lựa chọn nào khác, thì hãy tiếp tục đọc:

Chỉ cần ghi dữ liệu vào phản hồi ngay lập tức khi dữ liệu đến. Không lưu trữ mọi thứ trong bộ nhớ của Java. Về cơ bản:writer.write(resultSet.getString("col")) . Hơn nữa, trình điều khiển MySQL JDBC theo mặc định sẽ lưu trữ mọi thứ trong bộ nhớ của Java trước khi đưa bất kỳ thứ gì vào ResultSet#next() . Bạn muốn nó cung cấp dữ liệu ngay lập tức theo từng hàng bằng cách đặt Statement#setFetchSize() theo tài liệu trình điều khiển MySQL JDBC .

Đây là một ví dụ khởi động, giả sử bạn muốn xuất dữ liệu ở định dạng 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. Tần số đếm Mysql

  2. Bắt org.hibernate.exception.JDBCConnectionException:không thể thực hiện truy vấn ngay cả thông qua JNDI

  3. Làm thế nào để sử dụng xóa tầng trên công cụ lưu trữ MySQL MyISAM?

  4. Mô phỏng MySql OLD_PASSWORD trong .NET hoặc MS SQL?

  5. Bạn muốn đề xuất mẫu thiết kế phiên bản nào