Foros del Web » Programación para mayores de 30 ;) » Java »

Select sencilla

Estas en el tema de Select sencilla en el foro de Java en Foros del Web. Hola a todos! tengo un problema al realizar una select sencilla yo realizo esta función, pero hay una cosa que no sé como hacer ¿Como ...
  #1 (permalink)  
Antiguo 24/03/2009, 05:22
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta Select sencilla

Hola a todos!

tengo un problema al realizar una select sencilla yo realizo esta función, pero hay una cosa que no sé como hacer ¿Como tengo que poner en el return para que me devuelva el numero de cuenta que devuelve la select?
No tengo ni idea de como se hace, estoy un poco perdida.

Muchas gracias

public long findNum_cuenta(long id_socio, Connection con) throws TitularException{
PreparedStatement stmt = null;
ResultSet rs = null;
try {
final String SQLSTATEMENT = "Select num_cuenta from titular where id_socio = ? ";
stmt=con.prepareStatement(SQLSTATEMENT);
stmt.setLong(1, id_socio);
rs = stmt.executeQuery();
return rs.getLong("num_cuenta");
}
catch (SQLException sqle) {
throw new TitularException(sqle);
}
catch(Exception e){throw new TitularException(e);}
finally {}
}
  #2 (permalink)  
Antiguo 24/03/2009, 06:37
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Select sencilla

quizas si creas una variable auxiliar que inicializas a un valor que nunca pueda aparecer, para retornar en casos de que el resulset este vacio por lo que sea
y sacas fuera del try el return:
Código:
public long findNum_cuenta(long id_socio, Connection con) throws TitularException{


//variable nueva:
long auxiliar= -1; 
//pon un valor que tu consideres que nunca puede pasar.. para luego comprobar si esto se //puede dar 
PreparedStatement stmt = null;
ResultSet rs = null;
try {
final String SQLSTATEMENT = "Select num_cuenta from titular where id_socio = ? ";
stmt=con.prepareStatement(SQLSTATEMENT);
stmt.setLong(1, id_socio);
rs = stmt.executeQuery();
auxiliar= rs.getLong("num_cuenta");
}
catch (SQLException sqle) {
throw new TitularException(sqle);
}
catch(Exception e){throw new TitularException(e);}
finally {}
}
return auxiliar;
//si fallara por cualquier cosa.. el try , tiene que retornar igualmente un valor..
}
sino es esto explica el error que te aparece

espero qeu te ayude...
  #3 (permalink)  
Antiguo 24/03/2009, 07:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Select sencilla

Buenas!!

El problema está en: return rs.getLong("num_cuenta"); que no sé si en realidad se hace con el getLong o se usa otra funcion.

El fallo que me da es:

java.sql.SQLException: es.ccsc.exception.TitularException: java.sql.SQLException: Before start of result set
at es.ccsc.action.MovAction.execute(MovAction.java:45 )
at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:729)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11 ConnectionHandler.processConnection(Http11BaseProt ocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
Caused by: es.ccsc.exception.TitularException: java.sql.SQLException: Before start of result set
at es.ccsc.impl.TitularDAOImpl.findNum_cuenta(Titular DAOImpl.java:378)
at es.ccsc.action.MovAction.execute(MovAction.java:43 )
... 20 more
Caused by: java.sql.SQLException: Before start of result set
at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.jav a:700)
at com.mysql.jdbc.ResultSet.getNativeLong(ResultSet.j ava:7816)
at com.mysql.jdbc.ResultSet.getNativeLong(ResultSet.j ava:7811)
at com.mysql.jdbc.ResultSet.getLong(ResultSet.java:27 09)
at com.mysql.jdbc.ResultSet.getLong(ResultSet.java:27 24)
at org.apache.commons.dbcp.DelegatingResultSet.getLon g(DelegatingResultSet.java:240)
at es.ccsc.impl.TitularDAOImpl.findNum_cuenta(Titular DAOImpl.java:375)
... 21 more

Espero que me podais ayudar

Un Saludo
  #4 (permalink)  
Antiguo 24/03/2009, 09:42
 
Fecha de Ingreso: octubre-2005
Ubicación: Córdoba, Veracruz
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Select sencilla

De acuerdo con una página, deberías intentar poniendo
rs.beforeFirst();

Antes de
return rs.getLong("num_cuenta");

aunque yo creo que lo que deberías hacer es algo como
rs.next()

El error está diciendo (si mi inglés no me falla) que el resultset está antes del inicio.
¡Saludos!
  #5 (permalink)  
Antiguo 24/03/2009, 10:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 57
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Select sencilla

Si el error es lo que dice hooligan, a mi me ha pasado alguna vez en alguna consulta sencilla que he hecho, debes pasar al primer valor que saque la consulta con rs.next(), y una vez hecho esto ya podras obtener el dato como lo tenias con rs.getLong("numcuenta"), si es un tipo dato Long claro jeje
1 saludo
  #6 (permalink)  
Antiguo 25/03/2009, 01:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Select sencilla

Muchas gracias, me habéis ayudado mucho, ya me funciona.

Un Saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:57.