Foro Oficial de Java

Kornholio

Lanero Reconocido
18 Mar 2005
192
Antes de mostrar porque no te funciona deberías indicar cual es exactamente el error, antes de poderte ayudar, podrías por ejemplo mostrar el Postgresql error?, por ejemplo aquí en esta pagina http://www.postgresql.org/docs/9.0/static/errcodes-appendix.html puedes encontrar la referencia exacta del error. No es solo decir "¡Tengo un error en el insert!" si no proveer por ejemplo el mensaje de la excepción.

hola y gracias por tu comentario, aver...el problema es ese NO MUESTRA NINGUN ERROR, y no hace el INSERT :S no se si me explico bien....simplemente NO HACE EL INSERT :S
 

raven9t

Lanero Reconocido
22 Jun 2007
369
hola y gracias por tu comentario, aver...el problema es ese NO MUESTRA NINGUN ERROR, y no hace el INSERT :S no se si me explico bien....simplemente NO HACE EL INSERT :S

Segun lo que dices,deduzco que nunca te salta una excepción, si no estas usando transacciones ni nada por el estilo, lo mas probable no sea a nivel de código si no de comunicación, es decir el servicio de escucha de la base de datos no te esta oyendo, o tal vez sea por culpa de algún conflicto con un puerto, y aunque el servicio inicia no es posible comunicarse con el.

Prueba usar PgAdmin para introducir algún dato, si este si se almacena es posible descartar un problema de puerto y tal ves pensar en un bloqueo por firewall o algo así.

Verifícalo y nos cuentas.
 

R4

Lanero Reconocido
29 Ene 2003
433
hola y gracias por tu comentario, aver...el problema es ese NO MUESTRA NINGUN ERROR, y no hace el INSERT :S no se si me explico bien....simplemente NO HACE EL INSERT :S

pruebe con la sentencia, en vez de .execute() dele un .executeUpdate()

investigue también si con postgress hay que hacer algo especial para que haga auto-commit o algo así, porque yo creo que se está ejecutando bien pero no esta haciendo el commit del insert.

pruebe y me cuenta
 

Yeison

Lanero Líder
Lanero VIP
1 Feb 2004
11,134
haber, para mysql es necesario bajar el driver de mysql y cargarlo en la carpeta libs, ya bajaste el driver para postgre????

para oracle me imaginoooooo que loo estara trayendo implicito por ser java propiedad de oracle...
 

Kornholio

Lanero Reconocido
18 Mar 2005
192
haber, para mysql es necesario bajar el driver de mysql y cargarlo en la carpeta libs, ya bajaste el driver para postgre????

para oracle me imaginoooooo que loo estara trayendo implicito por ser java propiedad de oracle...

hola, claro! eso fue lo primero que hice, ya tengo el driver agregado y ya el netbeans lo tenia, solo lo seleccione y lo agregue.

en cuanto al resto bueno intentare y les comento a ver si me funciono, gracias!
 

DarkFulgoreII

Lanero Reconocido
31 Ago 2008
1,126
pruebe con la sentencia, en vez de .execute() dele un .executeUpdate()

investigue también si con postgress hay que hacer algo especial para que haga auto-commit o algo así, porque yo creo que se está ejecutando bien pero no esta haciendo el commit del insert.

pruebe y me cuenta

Es cierto, es necesario hacer el execute update por que el execute es solo para consultas select y demás que NO escriben en la bd... Para mi es muy probable que ese sea el lío...
 

raven9t

Lanero Reconocido
22 Jun 2007
369
Es cierto, es necesario hacer el execute update por que el execute es solo para consultas select y demás que NO escriben en la bd... Para mi es muy probable que ese sea el lío...

Estas equivocado:(, execute tambien se usa para sentencias que no devuelven un conjunto de registros(Update, Insert, Delete), por convencion para sentencias que actualizan la base de datos se usa executeUpdate y para sentencias que devuelven multiples resultados se usa executeQuery que nos devuelve un cursor apuntando a los registros, execute solo devuelve un boolean que nos indica si lo que se devolvió fue un conjunto(un resultset), un numero de filas afectadas o un conjunto vacío, ver aquí.

El problema que tiene es bastante raro, porque, si no hubiera adjuntado el jar del controlador jdbc hubiera recibido una excepción, el auto commit con jdbc esta en on por defecto, y no importa si usa execute en vez de executeUpdate. Yo he trabajo mucho con postgresql y nunca he tenido este problema usando cualquier método execute.

Así que a menos que tengas la opción autocommit en off, lo mejor es verificar su conexión con la BD. Una alternativa por si tiene afan y es un trabajo que tiene que entregar y quiere descartar si es su maquina, instala un hypervisor con cualquier sistema operativo, que soporte java, su entorno de desarrollo preferido y postgresql y haz el ensayo ahí.

:p
 

Kornholio

Lanero Reconocido
18 Mar 2005
192
pruebe con la sentencia, en vez de .execute() dele un .executeUpdate()

investigue también si con postgress hay que hacer algo especial para que haga auto-commit o algo así, porque yo creo que se está ejecutando bien pero no esta haciendo el commit del insert.

pruebe y me cuenta

de todas formas no perdia nada con intentar... pero igual no funciono, habia que descartar :(
 

DarkFulgoreII

Lanero Reconocido
31 Ago 2008
1,126
Entiendo el punto del execute, pero si fuera un problema de conexión 1. Soltería alguna excepción y 2. No dejaría ejecutar select ... Que tal si se revisa los permisos sobre la base de datos que esta trabajando? Para descartar trate sobre otra base de datos psql de otra maquina, tengo la impresión que el asunto de permisos no era tan obvio , solo que hace un rato no trabajo postgres.
 

Kaamos

Lanero Reconocido
25 Feb 2007
1,666
Una pregunta para los conocedores...

Estoy haciendo un programita sencillo. Con un frame principal con 3 botones, (agregar, buscar, editar).
Cuando le doy a agregar, el frame nuevo que se abre, escribo en los 3 jtextfield la informacion segun el programa.y con la accion de un boton queda todo guardado y se cierra la frame correspondiente para volver al principal. Pero cuando le doy otra vez en agregar, la informacion en los jtextfield anterior aparece en ellas y me toca borrar para meter una nueva.

Como puedo hacer para que cada vez que le de en agregar, los campos aparezcan vacios??
 

R4

Lanero Reconocido
29 Ene 2003
433
Una pregunta para los conocedores...

Estoy haciendo un programita sencillo. Con un frame principal con 3 botones, (agregar, buscar, editar).
Cuando le doy a agregar, el frame nuevo que se abre, escribo en los 3 jtextfield la informacion segun el programa.y con la accion de un boton queda todo guardado y se cierra la frame correspondiente para volver al principal. Pero cuando le doy otra vez en agregar, la informacion en los jtextfield anterior aparece en ellas y me toca borrar para meter una nueva.

Como puedo hacer para que cada vez que le de en agregar, los campos aparezcan vacios??

En el evento del botón guardar, cuando el método de guardar haya ejecutado todo correctamente puede asignar un "new JTextField();" a los jtextfield que usa, o puede ponerles el texto en blanco
.setText("");
 

radioactivo

Lanero Reconocido
1 Oct 2008
415
Hola Laneros, soy nuevo en el tema de Java y me gustaría saber si saben de algún material para comenzar con el aprendizaje de java.

mil gracias

Nada como un buen libro para java, para POO (programacion orientada a objetos) y lo que más me ha servido (o eso creo yo) los videotutoriales!!

de libros para empezar usaria cualquiera que diria introduccion, realmente todos son iguales en ese sentido, misma tematica.

despues te invito a que veas estos videotutoriales, realmente muy buenos, los niktutos, que el tipo enseña a hacer juegos, y explica varias cosas de una forma muy coherente y facil de entender.

http://www.youtube.com/user/niktutos?ob=0&feature=results_main

despues de eso, como voy yo: estoy leyendo este libro, programacion en c++, c, java y uml, que realmente es medio avanzado, y uno debe tener buenas bases, porque ya las explicaciones son cortas y centradas, yo lo hago por la teoria y los ejercicios.

ya despues que te diga un experto, yo me quedo hasta ahi, ya seria empezar a especializarse en un tema especifico XDD

suerte con eso
 

Kaamos

Lanero Reconocido
25 Feb 2007
1,666
Tengo un par de duditas.
En un trabajito de la U, estoy haciendo un buscador de acronimos, que contiene varias funciones, la de agregar acronimos, buscar acronimo por sigla, y buscar acronimo por letra, y mi ayuda es en este ultimo.

Usando netbeans cree un frame que contiene entre lo mas relevante un jCombobox con opciones desde la A, hasta la Z. y debajo un jTextArea donde apareceran todos los acronimos correspondientes a la letra seleccionada. Es sencillo, a la hora de seleccionar una de las letras del jCombobox, en el jTextArea automaticamente deberian de aparecer la busqueda.

Estoy manejando una persistencia, un archivo *.dat donde se almacena en disco los acronimos agregados.
Mi duda es la siguiente: Que funcion debo de emplear para tomar la seleccion del jCombobox y poder hacer la verificacion con la letra??
 

R4

Lanero Reconocido
29 Ene 2003
433
Tengo un par de duditas.
En un trabajito de la U, estoy haciendo un buscador de acronimos, que contiene varias funciones, la de agregar acronimos, buscar acronimo por sigla, y buscar acronimo por letra, y mi ayuda es en este ultimo.

Usando netbeans cree un frame que contiene entre lo mas relevante un jCombobox con opciones desde la A, hasta la Z. y debajo un jTextArea donde apareceran todos los acronimos correspondientes a la letra seleccionada. Es sencillo, a la hora de seleccionar una de las letras del jCombobox, en el jTextArea automaticamente deberian de aparecer la busqueda.

Estoy manejando una persistencia, un archivo *.dat donde se almacena en disco los acronimos agregados.
Mi duda es la siguiente: Que funcion debo de emplear para tomar la seleccion del jCombobox y poder hacer la verificacion con la letra??

Yo usaría una base de datos para que la consulta sea más fácil, pero ya que usted está usando un archivo yo le diría que cargara el contenido del archivo en memoria en un ArrayList<String>, donde cada fila del archivo es un elemento del array que representa un acrónimo;
luego sencillamente captura la letra seleccionada y la compara con los elementos del array en un bucle y los seleccionados los carga en otro arraylist, o simplemente los adiciona al jtextarea que va a mostrar.
recuerde colocar el "\n" para indicar un nuevo renglón.

Espero no haber sido muy enredado.
 

Kaamos

Lanero Reconocido
25 Feb 2007
1,666
mas facil mejor si pongo parte del codigo:

Código:
    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        Acronimo [] ac = searchl.tomarDiccionario().tomarAcronimo();
        for (int i=0; i<ac.length; i++){
            if (ac[i].tomarSigla().equals(this.jComboBox1.getSelectedIndex())){
                this.jTextArea1.append((i+1) + ". " + ac[i].tomarSigla() +" | "+ ac[i].tomarExpancion() +" | "+ ac[i].tomarDescripcion() +"\n");
            }
            else{
                JOptionPane.showMessageDialog(null, "Sigla no encontrada");
            }
        }
    }

practicamente el dilema seria en la linea del IF, tomar la opcion del jcombobox y compararla con la letra de la sigla