Necesito una función Java que devuelva los resultados de una consulta SQL SELECT
como un parámetro InputStream
para otro sistema que envía el resultado a través de una red.Java SQL Resultado para InputStream
Sin embargo, el InputStream
debe ser de String
con delimitadores personalizados (es decir, a menudo, pero no siempre, CSV).
Mientras que puedo crear fácilmente una función para recuperar el resultado, crear un delimitado String
, y finalmente convertir ese String
a un InputStream
, el resultado de SQL menudo será demasiado grande para procesar en la memoria. Además, el procesamiento de todo el conjunto de resultados antes de devolver el resultado incurrirá en un tiempo de espera no deseado.
¿Cómo puedo devolver un InputStream
para iterar sobre el resultado de SQL y enviar los datos procesados (delimitados) a medida que se devuelven desde la base de datos?
¿Ha buscado utilizar el conjunto de filas en caché jdbc? Eso podría ser útil para lo que estás tratando de hacer. http://docs.oracle.com/javase/1.5.0/docs/api/javax/sql/rowset/CachedRowSet.html – ChadNC
No, pero ¿cómo podría ayudarme eso? El problema no es dejar la conexión abierta, sino tener los resultados en la memoria. –
eso es lo que es un conjunto de filas en caché. proporciona una forma más fácil de enviar los resultados de una consulta a través de una red a otros dispositivos, aplicaciones, etc. – ChadNC