¿Dudas sobre el Java?

Como estas ... Tengo el siguiente codigo Java
public void BuscaCodigo(String xcod){
  String cadena="select * from dempleado where dcodemple='"+xcod+"'";
  try {
  rs=sql.Consulta(cadena);  
  System.out.println(rs.getString("dnomemple").trim());
  System.out.println(rs.getString("dcedula").trim());
} catch (SQLException e) {
   e.printStackTrace();
}
}
Indica el siguiente error Exception in thread "AWT-EventQueue-0" java. Lang. NullPointerException que sera lo que estoy haciendo mal no veo el error estoy pasando una cadena sql a un método Consultar que tengo en una clases que maneja todo lo de base de datos ---

1 Respuesta

Respuesta
1
Por el tipo de error (NullPointerException) es posible que tu método consulta este regresando un null en lugar de un resultset como es esperado.
Prueba con el siguiente código, básicamente es para verificar si el rs que estas esperando del método consulta es nulo, en todo caso el error estaría en la clase sql:
public void BuscaCodigo(String xcod){
  String cadena="select * from dempleado where dcodemple='"+xcod+"'";
  try {
  rs=sql.Consulta(cadena);  
  if(rs == null){
         System.out.println("Resultset nulo");
          return;
  }
  System.out.println(rs.getString("dnomemple").trim());
  System.out.println(rs.getString("dcedula").trim());
} catch (SQLException e) {
   e.printStackTrace();
}
}
Si he ribisado mi Clase Sql y allí tenia un error pero to código me ha sido muy útil mejor hacerlo así así se maneja el error si ocurre ... Una pregunta más Como hago para guardar fecha en la base de datos con Java...
En java existen dos objetos "Dates", uno que pertenece a java. Útil y el otro que pertenece a java.sql, este ultimo se usa para guardar/recuperar fechas desde una base de datos. Básicamente java.sql.Date hereda java. Útil. Date pero tiene algunas modificaciones para acoplarse al standard de sql.
Si quieres guardar una fecha en la base de datos tienes que usar java.sql.Date, supongamos que tengas una fecha guardada en un objeto java. Útil. Date, para convertirlo a sql. Date harías algo así:
java.util.Date fecha = new java.util.Date();
java.sql.Date fechaSQL = new java.sql.Date(fecha.getTime());
Hola te explico lo que he hecho... con este codigo monto lahota en una cja de texto lo dal de la siguiente Manera 11:51:30 AM, que es lo que quiero que se vea ...  pienso usar este para mostrar en la caja de texto
public String getFechaHora(){        
         Date Hoy = new Date();         
        //Preparamos los Formatos de presentacion
        DateFormat df1 = DateFormat.getDateInstance(DateFormat.FULL);
        DateFormat df2 = DateFormat.getTimeInstance(DateFormat.SHORT);
        DateFormat df3 = DateFormat.getDateInstance(DateFormat.SHORT);         
        //System.out.println(df2.format(Hoy)+", "+df1.format(Hoy));
         return df2.format(Hoy);
    }
ahora bien entiendo que me dices que use java.sql.Date para guardar en base de datos pero
java.util.Date fecha = new java.util.Date();
java.sql.Date fechaSQL = new java.sql.Date(fecha.getTime());
        System.out.println(fecha.getHours());  
Me imprime Ejemplo 12 como hago para capturar Ejemplo 12:15:23 . HH:MM:SS ... y guardar de esa manera en la base de datos
Por lo que veo tu lo que quieres es guardar la hora no la fecha, en sql esto tiene un significado muy diferente, una fecha contiene solo dia/mes/año y aunque tu objeto Date en java contenga la hora, esta no es guardada debido a que el tipo de dato Date en sql solo acepta fecha, para guardar la hora requieres usar el objeto timestamp.
Quedaria algo asi:
java.util.Date fecha = new java.util.Date(); 
Timestamp hora = new Timestamp(fecha.getTime());
La Fecha También la deseo Guardar
El timestamp te maneja ambos, de hecho timestamp hereda date, digamos que es un date con soporte para hora
Pero como el timestamp puede capturar el Forma HH:MM "1:20" solo se ve 13 como hago que lo capture también con los minutos
       java.util.Date fechas = new java.util.Date();
        Timestamp hora = new Timestamp(fecha.getTime());
        System.out.println("HORA "+ hora.getHours());
Ok, mira el timestamp es un objeto para ser usado en jdbc no tanto para que lo uses a lo largo de toda tu aplicación, tanto timestamp como date guardan la fecha en formato de milisegundos, la forma en como mostrarlo depende ya de tu formato, dateformat que ya lo has usado, en el caso de guardar conviertes tu date en timestamp y lo guardas en la bd, cuando lo recuperas conviertes tu timestamp en un date y así ya lo puedes manipular. Si quieres que el timestamp te imprima la hora en el formato en que la metiste no lo va a hacer puesto que ese formato es solo visual y de logra con los dateformatters pero en realidad el objeto date y el objeto timestamp guardan milisegundos no algún formato especifico.
Deberás disculpa tanta molestia te muestro el código a ver que me dices el Error es como el anterior Null Pointer Exception pero no lo veo ... es hace la consulta pero cuando va a Guardar la hora es donde da el error
Este es el metodo para guardar la hora de la Clase Sql Donde manejo todo lo de base de datos
public void guardarPrueba(Time sqlFecha) {
    PreparedStatement insertDato = null;
    System.out.println(sqlFecha);
        try {
            insertDato = conn.prepareStatement("INSERT INTO prueba VALUES(?)");
            insertDato.setTime(1, sqlFecha);            
            insertDato.execute();
            conn.commit();            
        } catch (SQLException e) {
            e.printStackTrace();
        }        
    }
public void BuscaCodigo(String xcod){            
        String cadena="select name,cedula from dempleado where cedula='"+xced+"'";        
        try {                        
                   rs=Consulta(cadena);                   
                   vc.getJTName().setText(rs.getString("name"));              
                   vc.getJTCargo().setText(rs.getString("cedula"));                                             
                   VerificarHorario(getHoraComprobar());
                   Time valor=getSqlFecha();
                   sql. guardarPrueba(valor);     /// AQUI ES DONDE DA EL  ERROR                                                                                                                           "AWT-EventQueue-0" java.lang.NullPointerException
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null,"EMPLEADO INVALIDO");
            limpiarCajas();
            vc.getCodiB().setEnabled(true);
        }    
    }
Este es el metodo que me devuelve la Hora 
public Time getSqlFecha(){
        java.util.Date utilDate = new java.util.Date();
        long lnMilisegundos = utilDate.getTime();                
        java.sql.Time sqlTime = new java.sql.Time(lnMilisegundos);       
        return sqlTime;
    }
Te pido disculpas por tanta molestia a cada rato deberás agradezco la ayuda...
¿El error te lo da aquí?
insertDato.setTime(1, sqlFecha);
¿Podrías pegarme la primera parte de la excepción
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException esta es la primera linea de la exepcion ya la otra indica en que lina de la clase ocurrio....
En que linea ocurre, en insertDato. setTime(1, sqlFecha);?
sql.guardarPrueba(valor);     /// aqui es donde ocurre el error                                                                                                                          "AWT-EventQueue-0" java.lang.NullPointerException
¿La variable sql la tienes inicializada en algún lugar?
Trabajo con modelo vista controlado todo lo que te he mostrado esta en el controlador desde elcontrolador declaro la variable SqlConexion sql...
Dentro del constructor llamo la conexión
Por el error que te da y sobre todo en la linea, solo pueden ser 2 cosas o la variable sql es nula o valor es nulo, antes de hacer la llamada verifica si ambos no son nulos.
Te cuento que la hora ya la guardo... ahora estoy con la fecha... me da un error en un rato te envío como solucione lo de la hora y el nuevo error saludos ...
¿Cómo va todo?
Holoa disculpa, la tardanza estaba en otras actividades de la Universidad... así resolví la hora y guarda en l BD con un tipo TIme...
public String getSqlHora(){
        GregorianCalendar hoy = new GregorianCalendar();
        int dia = hoy.get(Calendar.DAY_OF_MONTH);
        int mes = hoy.get(Calendar.MONTH)+1; // De 0 a 11
        int annio = hoy.get(Calendar.YEAR);
        int hora = hoy.get(Calendar.HOUR_OF_DAY); // De 0 a 23 horas
        int minuto = hoy.get(Calendar.MINUTE);
        int segundo = hoy.get(Calendar.SECOND);
        int milisegundo = hoy.get(Calendar.MILLISECOND);
        String hor=Integer.toString(hora)+":"+Integer.toString(minuto);
        return hor;
    }
Como hago un JTREE que lea los archivos... del disco duro ... como un explorador de windows es que estoy trabajando mi proyecto con fotos pero quisiera buscarla de esa manera y así obtener la ruta donde están las fotón y con esa ruta dársela al string para guardarla en la base de datos
Muy bien, ¿necesitas ayuda con lo del JTree?
Hola si algo de ayuda con el JTREE como haría para construir uno como el explorador de windows .. y al seleccionar un archivo me de su ruta completa
Bueno primero tendrías que obtener los archivos, que esto lo haces fácilmente con el método listFiles() del objeto File:
String[] fotos = new File("c:/fotos").listFiles().
Con este array podrías construir el JTree, la cuestión aquí es que ese array que retorna el listFiles() puede contener archivos y directorios, aquí es donde al iterar sobre el array tendrías que verificar si es un archivo o un directorio.
Hola por el momento le di esta solución Con file obtengo las fotos que están en la carpeta y la cargo en un Jcombo todo .. ya con más tiempo haré el JTREE esta próxima la entrega y aun me faltan reportes ... y otra pantalla que debo registrar algunas cosas los reportes son los que preocupan
Como estas, te cuento,.. dándole al código ... una pregunta más de las tantas ya reliazadas... quiero capturar una clave en un JOPTIONPANE.SHOWINPUTDIALOG como harías para que la clave no se vea modifique el JOPTION agregadole un JPASSWORD pero si escribo allí la contraseña no me devuelve el valor escrito
¿Cómo obtienes el password del componente?, con getPassword(¿)?
entrada = JOptionPane.showInputDialog ( null,"Introduzca usuario ","D R O S Y N C A CONFIRMACION",
                   JOptionPane.QUESTION_MESSAGE);
esto es lo que estoy usando pero para la clave se ve... entonces como haría para que sea * como el jpasw
Puedes crear un jpanel al que le incluyes el jpasswordfield, simularías un JOptionpane con este, es decir lo crearías y mostrarías en forma modal. Con el JOptionPane no vas a poder a menos que extiendas y modifiques esa clase.
Después de unos días de ausencia sigo aquí. Esa parte ya la eh solucionado ahora estoy tratando de hacer que se muestre una información duranrte unos segundos enlas cajas de texto saludos
Saludos.
En esta ocasión te escribo para puntear ya finalizae la aplicación Agradezco enormemente tu ayuda espero algún día encontrarnos de nuevo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas