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

Mostrar registros de una BD, ejercicio estoy trancada

Estas en el tema de Mostrar registros de una BD, ejercicio estoy trancada en el foro de Java en Foros del Web. Hola chicos, estoy tratando de aprender y siguiendo el tutorial de http://www.homeandlearn.co.uk/java/d...g_buttons.html logré finalmente hacer andar una base de datos y mostrar un registro! El ...
  #1 (permalink)  
Antiguo 04/08/2014, 17:52
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 14 años, 11 meses
Puntos: 15
Mostrar registros de una BD, ejercicio estoy trancada

Hola chicos, estoy tratando de aprender y siguiendo el tutorial de http://www.homeandlearn.co.uk/java/d...g_buttons.html logré finalmente hacer andar una base de datos y mostrar un registro!

El tema es que al hacer clic en el botón Next me tira un error del tipo:
Cita:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Employees.Workers.btnNextActionPerformed(Workers.j ava:218)
que según entiendo se debe a que la variable rs es nula Null cuando el programa entra al try

Sin embargo, esa variable debería estar bien porque el primer registro SI lo muestra, o sea que tenía un valor adentro. No me doy cuenta como solucionarlo y el tutorial no dice más nada.

Les pego el código que tengo de las partes fundamentales, no me deja pegar TODO el código:

Donde se define la variable rs
Código:
/*
package Employees;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;

/**
 *
 * @author lufe
 */
public class Workers extends javax.swing.JFrame {

    /**
     * Creates new form Workers
     */
    
    Connection con;
    Statement stmt;
    ResultSet rs;
    
    public Workers() {
        initComponents();
        DoConnect();
    }
y la acción que ejecuta al hacer clic en NEXT

Código:
private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        System.out.println("Por entrar al Try");
        System.out.println(rs);
        try {
            if ( rs.next( ) ) {
                int id_col = rs.getInt("ID");
                String id = Integer.toString(id_col);
                String first_name = rs.getString("First_Name");
                String last_name = rs.getString("Last_Name");
                String job = rs.getString("Job_Title");
                
                textID.setText(id);
                textFirstName.setText(first_name);
                textLastName.setText(last_name);
                textJobTitle.setText(job);
            }
        else {
            rs.previous( );
            JOptionPane.showMessageDialog(Workers.this, "End of File");
        }
            }
        catch (SQLException err) {
            JOptionPane.showMessageDialog(Workers.this, err.getMessage());
        }
    }
Las líneas

System.out.println("Por entrar al Try");
System.out.println(rs);

las agregué yo misma para verificar que rs entra valiendo NULL

No me doy cuenta como solucionarlo
  #2 (permalink)  
Antiguo 05/08/2014, 03:24
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

at Employees.Workers.btnNextActionPerformed(Workers.j ava:218) ....

¿Cual es la línea 218 de Workers.java?

Se buena.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 05/08/2014, 04:10
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 14 años, 11 meses
Puntos: 15
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

Cita:
Iniciado por chuidiang Ver Mensaje
at Employees.Workers.btnNextActionPerformed(Workers.j ava:218) ....

¿Cual es la línea 218 de Workers.java?

Se buena.

Hola esa línea es el IF
Código:
try {
            if ( rs.next( ) ) {
Por eso yo supongo que la variable rs entra a ese if valiendo NULL lo cual no entiendo porque antes de hacer click en el botón NEXT ya está mostrando los datos del primer registro....

acá te dejo todo el código:

http://tny.cz/5d6d36fb

Gracias por la ayuda
  #4 (permalink)  
Antiguo 05/08/2014, 05:46
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

Hola:

En DoConnect() estás haciendo

ResultSet rs = stmt.executeQuery( SQL );

Al poner delante ResultSet, estás declarando una variable rs local al método DoConnect() que es distinta (aunque tenga el mismo nombre), que el atributo de clase que declaras en Workers

ResultSet rs;

El resultado es que rs tiene valor para la variable local dentro de DoConnect(), pero el atributo rs sigue a null en el método btnNextActionPerformed().

Quita la palabra "ResultSet" dendtro del DoConnect.

Se buena.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 05/08/2014, 17:34
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 14 años, 11 meses
Puntos: 15
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

Genial chuidiang!!!

Era eso, se ve que quien armó el tutorial se olvidó de corregir ese detalle.

Ahora puedo seguir aprendiendo, muy agradecida!
  #6 (permalink)  
Antiguo 06/08/2014, 07:44
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 14 años, 11 meses
Puntos: 15
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

Evidentemente no logro encontrar un buen tutorial que funcione....

es deprimente, una sigue paso a paso tratando de aprender y siempre salta un problema nuevo

Ahora agregué un botón para actualizar los datos de los registros.

El código que indica el tutorial e:

http://www.homeandlearn.co.uk/java/i...ode_Update.gif

sin embargo al correr el programa me tira el error

ResultSet is not updatable.



Sin embargo las líneas:

Connection con = DriverManager.getConnection(host, uName, uPass);
stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE );

indican que el ResulSet permite actualizar los datos.

Leí por ahí que puede ser un problema del driver??? o la forma en que invocamos al SELECT la cual debe incluir la llave primaria

probé cambiar

String SQL = "SELECT * FROM Workers";

por

String SQL = "SELECT ID, First_Name, Last_Name, Job_Title FROM Workers";

y tampoco funciona
  #7 (permalink)  
Antiguo 15/08/2014, 16:51
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 14 años, 11 meses
Puntos: 15
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

Hola chicos, aparentemente el problema es que el driver de Derby no permite que el Resultset sea actualizable, o al menos así lo entiendo.

Por las dudas dejo este tema cerrado y abro un hilo aparte

http://www.forosdelweb.com/f45/netbe...zable-1106750/

ya que es una consulta genérica sobre Derby

Y si alguien lee este post y le sirve, instalé la versión derbyclient-10.10.1.1 y funcionó correctamente!!

Es una pena que al instalar Netbeans luego no sea tan claro en el sitio de Derby cuál versión es compatible con cada versión de Netbeans. Supongo que será cuestión de bajar las últimas versiones de ambos e ir probando.

Última edición por lufe; 16/08/2014 a las 08:26
  #8 (permalink)  
Antiguo 16/08/2014, 14:32
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

Mira el lado bueno, a base de tropezar aprendes, con lo cual, lo mejor es que salgan errores para saber luego solucionarlos y, que no se te olvide la solución :D
  #9 (permalink)  
Antiguo 17/08/2014, 07:14
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 14 años, 11 meses
Puntos: 15
Respuesta: Mostrar registros de una BD, ejercicio estoy trancada

Cita:
Iniciado por yesod91 Ver Mensaje
Mira el lado bueno, a base de tropezar aprendes, con lo cual, lo mejor es que salgan errores para saber luego solucionarlos y, que no se te olvide la solución :D
Hola Yesod92, es tal cual, así vamos aprendiendo, en cuanto a no olvidarme de la solución creo que estoy cubierta porque apenas logro resolver algo tomo nota y lo guardo para futuras referencias.

Etiquetas: bd, ejercicio, jframe, programa, registros, string, valor
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 00:11.