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

saber si executeQuery del JDBC realiza la consulta

Estas en el tema de saber si executeQuery del JDBC realiza la consulta en el foro de Java en Foros del Web. Hola Gente regreso a preguntar a los que saben despues de mucho tiempo.. Resulta que tengo una aplicacion y estoy relizando inserts y updates y ...
  #1 (permalink)  
Antiguo 25/08/2013, 11:57
 
Fecha de Ingreso: noviembre-2003
Mensajes: 267
Antigüedad: 20 años, 5 meses
Puntos: 4
saber si executeQuery del JDBC realiza la consulta

Hola Gente regreso a preguntar a los que saben despues de mucho tiempo..
Resulta que tengo una aplicacion y estoy relizando inserts y updates y necesito saber si se realizan correctamente ... para poder mostrar diferentes mensajes en la ventana..
en PHP se podia poner dentro de un IF y ver si retorna 0 o 1 pero aqui en java no se como hacerlo..

Espero su ayuda ,muchas gracias .
Apsol
  #2 (permalink)  
Antiguo 25/08/2013, 12:37
 
Fecha de Ingreso: agosto-2013
Ubicación: d.f.
Mensajes: 38
Antigüedad: 10 años, 8 meses
Puntos: 0
Información Respuesta: saber si executeQuery del JDBC realiza la consulta

pues mira yo estoy utilizando java para conectar con postgres y los querys de insert y select (por ponerte un ejemplo) las llamo a traves de procedimientos almacenados definidos en el gestor de base de datos, ahora por lo que preguntas eso de comprovar si se ejecuto o no es atraves segun yo de la utilizacion de try y catch te pongo un ejemplo a ver si me entiendes:

Código Java:
Ver original
  1. //funcion que obtiene el usuario en base al id del prestador
  2.    public String ObtenerUsuario(String id_prestador){
  3.      
  4.       //establece conexion con la base de datos
  5.       conecta=ConectarBD_asistencia_servicio();
  6.      
  7.       //guarda el usuario encontrado por el procedimiento almacenado
  8.       String usuario="";
  9.      
  10.       try{
  11.          //prepara al procedimiento almacenado y pasa el parametro
  12.          //id_prestador al mismo
  13.          pctoUsuario=conecta.prepareCall("{call obteneruser(?)}");
  14.          pctoUsuario.setString(1,id_prestador);
  15.          
  16.          //ejecuta el procedimiento almacenado y recorre los registros
  17.          //de la tabla en busca de los datos
  18.          resultado=pctoUsuario.executeQuery();
  19.          while(resultado.next()){
  20.             usuario=usuario+resultado.getString(1);
  21.          }//termina while
  22.          
  23.          //retorna la funcion los datos encontrados por el procedimiento alamcenado
  24.          return usuario;
  25.          
  26.       }//termina try
  27.       catch(Exception e){
  28.          //en caso de existir algun impedimento se despliega un mensaje
  29.          //indicando el error
  30.          JOptionPane.showMessageDialog(null,"Error"+e);
  31.          return null;
  32.       }//termina catch
  33.      
  34.    }//termina funcion ObtenerUsuario

esta es una funcion en la cual obtiene el campo usuario al yo ingresar un id despues dentro de la funcion me conecto a la base de datos a traves de la variable conecta luego dentro del try llamo a mi procedimiento almacenado es decir lo prepara y le paso el argumento de la funcion despues ejecuto el query con el codigo de .executeQuery() lo demas es recorer el registro mediante un while mientras halle datos y bueno esto lo ejecuta pero si en caso de que alla algun fallo o percanse que impida la ejecucion genera un error el cual es camptutado (mas bien cachado) por el catch y luego muestra a traves de un showMessageDialog el error.

bueno ma so menos es asi, en pocas palabras nesesita implementra tus querys en estructuras try/catch ademas no se si tus querys los implementas directamente en el codigo de java o a traves de procedimientos almacenados o funciones, tambien a lo que pones de diferentes mensajes yo supongo que dependiendo de lo ingresado y/o actualizado es decir los datos que ingresas quieres mostrar mensajes para cada situacion.

a lo mejor mas concretamente lo que tu quieres hacer es mostrar mensajes de acuerdo a ls datos qeu ingreses antes de realizar tus insert o updates es decir validar tus datos.

espero aberte ayudado y no aberte confundido demaciado, por cierto que gestor de base de datos utilizas?? supongo que acces, mysql o sql server
__________________
"benditos sean todos los libros, pues cuando abres uno, te sumerges en un mundo nuevo y totalmente diferente..."
  #3 (permalink)  
Antiguo 25/08/2013, 12:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 267
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: saber si executeQuery del JDBC realiza la consulta

Gracias por responder tan pronto... lo que me psaste es parecido a lo que uso ... pero tomé algo de lo que pusiste para ver el error y me dice esto..

java.sql.SQLException: Can not issue data manipulation statements with executeQuery().

Yo supongo que la cadena de la consulta no la puede procesar...
yo le paso esto....

s.executeQuery ("INSERT INTO `asignatura` (`Nombre`) VALUES ('"+asignatura+"')");

Me llama la atencion como manejas tu la consulta.. con lo de :

prepareCall("{call obteneruser(?)}")

Como se usa esto bien ..????

Gracias estimado...
  #4 (permalink)  
Antiguo 25/08/2013, 13:06
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años
Puntos: 9
Respuesta: saber si executeQuery del JDBC realiza la consulta

Antes que nada para un insert tienes que usar: executeUpdate, no executeQuery.

y te falto el " \ " -->
Código Java:
Ver original
  1. VALUES  "(\"" + asignatura + "\")";
  #5 (permalink)  
Antiguo 25/08/2013, 13:08
 
Fecha de Ingreso: noviembre-2003
Mensajes: 267
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: saber si executeQuery del JDBC realiza la consulta

Ya pude solucionar... lo dejo para los que les pueda pasar este error ..

statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation

cuando es INSER o UPDATE hay que usar executeUpdate y en caso de selecciones usar executeQuery.

Es lo que encontré por ahí y me funcionó con el string de consulta que tenia.

Saludos, e igual espero esa explicacion de como usar el PrepareCall ;)
  #6 (permalink)  
Antiguo 25/08/2013, 13:09
 
Fecha de Ingreso: noviembre-2003
Mensajes: 267
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: saber si executeQuery del JDBC realiza la consulta

Cazador puse enviar la respuesta y recén ahi vi tu respuesta gracias =
  #7 (permalink)  
Antiguo 25/08/2013, 14:12
 
Fecha de Ingreso: agosto-2013
Ubicación: d.f.
Mensajes: 38
Antigüedad: 10 años, 8 meses
Puntos: 0
Información Respuesta: saber si executeQuery del JDBC realiza la consulta

Cita:
Gracias por responder tan pronto... lo que me psaste es parecido a lo que uso ... pero tomé algo de lo que pusiste para ver el error y me dice esto..

java.sql.SQLException: Can not issue data manipulation statements with executeQuery().

Yo supongo que la cadena de la consulta no la puede procesar...
yo le paso esto....

s.executeQuery ("INSERT INTO `asignatura` (`Nombre`) VALUES ('"+asignatura+"')");

Me llama la atencion como manejas tu la consulta.. con lo de :

prepareCall("{call obteneruser(?)}")

Como se usa esto bien ..????

Gracias estimado...
veo que ya has resuelto tu problema aun asi te explico lo que preguntaste
con el prerareCall lo que hago es llamar al procedimiento almacenado el cual se encuentra definido en el gestor de base de datos en mi caso es el postgres, ahora yo utilizo los procedimients almacenados por que es en la buena practica asi evitamos que halla inyecciones sql es decir para evitar que los usuarios puedan ingresar y ejecutar codigo sql con la finalidad de obtener informacion, asi que con los procedimientos almacenados evitamos esto, tambein, yo los llamo a estos procedimientos dentro de funciones y asu ves en mi aplicativo solo creo un objeto de dicha clase para llamar a estas funciones, es decir, trato de seguir una metodologia conocida como metodologia de 3 capas las cuales son: capa de aplicacion, capa de logica de negocio y capa de datos, con esta metodologia separas tu programa en partes para tener una buen orden ademas ayuda mucho cuando nesesitas dar mantenimiento o modificar tu codigo.

espero que me hallas entendido.
__________________
"benditos sean todos los libros, pues cuando abres uno, te sumerges en un mundo nuevo y totalmente diferente..."

Etiquetas: Ninguno
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 21:19.