Re: Error el ejecutar un metodo en java con postgres

From: Cristian Alejandro Rossel Moraga <cristianrosselm(at)vtr(dot)net>
To: William Diaz Pabón <wdiaz(at)unipamplona(dot)edu(dot)co>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Error el ejecutar un metodo en java con postgres
Date: 2004-11-20 03:52:31
Message-ID: 1100922750.448.88.camel@lautaro.leufu.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estimado William:

Analizando tu código, te recomiendo que apliques el patrón DAO
(http://java.sun.com/blueprints/patterns/DAO.html), ya que tu código
depende de características específicas de los datos de la capa de
recursos, juntando la lógica de negocios con la lógica de acceso a los
datos, dificultando remplazar o modificar los recursos de los datos de
una o varias aplicaciones. El pattern DAO, separa la lógica del negocio
con la lógica de acceso a los datos (embebidas en el DAO).

El vie, 19-11-2004 a las 18:19, William Diaz Pabón escribió:

> al ejecutar un metodo en java que utiliza un BD en prosgrest me da este
> error:
>
> No value specified for parameter 3
> org.postgresql.util.PSQLException: No value specified for parameter 3

...

>
> este es el código del metodo que tengo:
>
> public Object listarNotasAlumno(String idGrupoMatriculado, ArrayList ob) {

...
StringBuffer ssql = new StringBuffer();
...

Ahora, después de: "for(int it=0;it<listaEvaluaciones.size();it++){",
agrega:

ssql="";

...

> ssql.append(" SELECT distinct a.cacn_id,
> a.cacn_estado, a.cacn_valor ");
> ssql.append(" FROM aulasit.nota c,
> aulasit.calificacioncuantitativa a ");
> ssql.append(" WHERE c.nota_id = ? ");
> ssql.append(" and a.gmvi_id = ? ");
> ssql.append(" and a.nota_id = c.nota_id
> limit 1 ");

...

> this.ps =
> aDefConn.getConnection().prepareStatement(ssql.toString());
> this.ps.setLong(1,
> Long.parseLong(notaVO.getIdNota()));
> this.ps.setLong(2,
> Long.parseLong(idGrupoMatriculado));

Lo del 3 argumento, viene del loop del "for", donde no has hecho una
nueva instanciación o una limpieza de ssql .

Ahora, prefiero usar String a llamar al método append de StringBuffer,
ya que se tiende a quedar con la bala pasada!!!, yo usaría:

...
String sqlQuery;
...
sqlQuery = "select distinct a.cacn_id, a.cacn_estado, a.cacn_valor

+ " from (aulasit.nota c join aulasit.calificacioncuantitativa a on a.nota_id=c.nota_id) "
+ " where c.nota_id = ? and a.gmvi_id = ?";

Cordialmente,

Cristian Rossel Moraga,
Desde Santiago de Chile.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Cristian Alejandro Rossel Moraga 2004-11-20 04:08:33 Re: Problemas con Postgres
Previous Message Jaime Casanova 2004-11-19 21:27:51 Re: Mejorar consulta con date_part