Consulta - Java y Postgres

From: Brando <bl_mikax(at)yahoo(dot)es>
To: PostgreSQL Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Consulta - Java y Postgres
Date: 2009-05-15 03:52:26
Message-ID: 1242359546.3749.4.camel@kimera
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Señores, otra vez por aquí necesitando de su apoyo. Bueno les
comento:
Estoy desarrollando un pequeño aplicativo web con JSP, el cual consiste
en llevar el control de unos informes hechos en auditoria; para esto
registrare todos los datos requeridos y ademas por requerimiento deberia
tener la opcion de guardar archivos si fuera necesario. En primera
instancie pense en guardar estos archivos en base de datos ya que estos
no excederian los 2 Mb. Entonces para esto cree una clase que es donde
llamo a una funcion de postgres la cual detallo a continuacion:

public String uploadFileInforme(String num_informe, InputStream file,
size_file) throws Exception
{
String mensaje = null;
Connection con = null;
CallableStatement cs = null;
try{
con = BD.conectar();
con.setAutoCommit(false);
String query = "{? = call
auditoria.inserta_file_informe(?,?,?)}";
cs = con.prepareCall(query);
cs.registerOutParameter(1, java.sql.Types.VARCHAR);
cs.setString(2,num_informe.toUpperCase());
cs.setBinaryStream(3,file,size_file);
cs.execute();
mensaje = cs.getString(1);
if(mensaje.equals("OK")){
con.commit();
con.setAutoCommit(true);
}
}catch(Exception ex){
mensaje = ex.getMessage();
}finally{
try{
if (cs != null) cs.close();
if (con != null) con.close();
}catch(SQLException esql){
mensaje = esql.getMessage();
}
}
return mensaje;
}

y luego la funcion escrita en plpgsql seria:

Create or Replace Function auditoria.inserta_file_informe(varchar,
bytea)
Returns Text As
$body$
Declare
mensaje varchar(5);
id numeric(16,0);
fecha_registro date;
Begin
id = 0;
fecha_registro = now();
Select id_file into id from auditoria.file_informe order by id_file
DESC limit 1;
id = id + 1;
Insert Into
auditoria.file_informe(id_file,cod_informe,file_informe,fec_ reg)
Values(id,$1,$2,fecha_registro);
If Not Found Then
Raise Exception 'Error al tratar de guardar el archivo';
Else
mensaje = 'OK';
End If;
return mensaje;
End;
$body$
Language 'plpgsql';

El problema que tengo es que cuando ejecuto este método el servidor
donde tengo la base de datos se me cuelga, no se si es por el método de
java o por la función postgres. El tipo de dato del atributo de la tabla
en donde voy ha guardar el archivo es "bytea" que es lo que me
recomendaron para este tipo de operaciones.

He estado intentando de diferentes forma hacer esto pero no he
encontrado la solución, alguno de Ud. tal vez haya trabajado de esta
forma y me pueda dar alguna sugerencia.

Adicionalmente les comento que el servidor postgres lo tengo en una PC
dentro de mi LAN y accedo a traves de una IP de forma remota.

De antemano agradezco la atención prestada.

Saludos.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2009-05-15 05:06:03 funciones month en el wiki
Previous Message Eddy Ernesto Baños Fernández 2009-05-15 03:48:42 RE: Replicacion