Foro de elhacker.net

Programación => Java => Mensaje iniciado por: lluvplay en 6 Abril 2014, 14:10 pm



Título: Actualizar MYSQL desde evento JAVA
Publicado por: lluvplay en 6 Abril 2014, 14:10 pm
Hola buenos dias mi gente, estoy teniendo problema para actualizar mi base de datos mysql desde un envento serial.

El tema seria el siguiente: estoy recogiendo datos desde otro sistema mediante un evento serial, los datos se estan mostrando a la perfeccion, pero cuando estos datos llegan trato de llamar al metodo insert (mi metodo de insert en mysql) y nunca llega a este metodo. el codigo es el siguiente.

Código:
 SerialPortEventListener evento = new SerialPortEventListener() {
                    @Override
                        public void serialEvent(SerialPortEvent spe) {
                            if(arduino.MessageAvailable()==true)
                            {
                                concatenar = concatenar + arduino.PrintMessage();                       
                            }
                                 if (concatenar.length()>20)
                                 {
                                    data = concatenar.split("!");
                                        for (inicio=0; inicio<data.length; inicio++)
                                        {
                                            System.out.println(data[inicio]);
                                        }     
                                     db_conexion obj = new db_conexion();
                                             try {
                                             obj.db_conexion();
                                              obj.insertar(data);         
                                              System.out.println("aka");
                                              Thread.sleep(60000);
                                             } catch (SQLException ex) {
                                             Logger.getLogger(ventana_p.class.getName()).log(Level.SEVERE, null, ex);
                                             }
                                            termo.setValue(Double.parseDouble(data[4]));//Integer.parseInt(data[3]));
                                    txt_temperatura_actual.setText((data[4])+"º C");
                                    segundosDataset = new DefaultValueDataset(Double.parseDouble(data[1]));
                                    dialplot_velocidad.setDataset(0, segundosDataset);
                                    txt_velocidad_actual.setText(data[1]+" km/h");
                                    indice = Integer.parseInt(data[5]); // utilizo la misma variable indice
                                    dataset = new DefaultValueDataset(indice/133.322368);
                                    dialplot_presion_at.setDataset(dataset);
                                    txt_humedad_relativa.setText(data[3]+" %");
                                   
                                    indice = Integer.parseInt(data[2]);//{"1","2","3","4","5","6","7","8"};//{"O","NO","N","SO","NE","S","SE","E"}                             
                                 
                                    if(indice== 3)
                                       {     
                                            System.out.println ("--->N");
                                            panel_de_vel_viento.setIcon(Imagen[0]);
                                       }
                                       if(indice== 5)
                                       {     
                                            System.out.println ("--->NE");
                                            panel_de_vel_viento.setIcon(Imagen[1]);
                                       }
                                       if(indice== 2)
                                       {     
                                            System.out.println ("--->NO");
                                            panel_de_vel_viento.setIcon(Imagen[2]);
                                       }
                                       if(indice== 8)
                                       {     
                                            System.out.println ("--->E");
                                            panel_de_vel_viento.setIcon(Imagen[3]);
                                       }
                                       if(indice== 1)
                                       {     
                                            System.out.println ("--->O");
                                            panel_de_vel_viento.setIcon(Imagen[4]);
                                       }
                                       if(indice== 6)
                                       {     
                                            System.out.println ("--->S");
                                            panel_de_vel_viento.setIcon(Imagen[5]);
                                       }
                                       if(indice== 7)
                                       {     
                                            System.out.println ("--->SE");
                                            panel_de_vel_viento.setIcon(Imagen[6]);
                                       }
                                       if(indice== 4)
                                       {     
                                            System.out.println ("--->SO");
                                            panel_de_vel_viento.setIcon(Imagen[7]);
                                       }
                                          System.out.println(concatenar);
                                          System.out.println(concatenar.length());
                                          concatenar ="";
                                  }                                       
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
              } // fin del metodo
             
        }; //fin del evento

colocare mi metodo insert pero segun mis pruebas el metodo insert esta bien, porque lo llamo de la misma forma desde un boton y este si funciona. pero bueno aqui esta:

Código:
public void insertar( String data[]) throws SQLException
{
       
        prepared=conexion.prepareStatement("SELECT max(da_id_data) FROM `te_data`");
        tabla=prepared.executeQuery();
        metadata=tabla.getMetaData();
        while (tabla.next())
        {           
           filas =new Object[metadata.getColumnCount()];
            for (int i = 0; i < filas.length; i++)
                filas[i]=tabla.getObject(i+1);               
        }
        String convert = String.valueOf(filas[0]);
        int siguiente = Integer.parseInt(convert)+1;
       
Calendar cal = Calendar.getInstance();
//        java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime());

PreparedStatement pstmt = null;
    try {
      String query = "insert into te_data (da_id_usuario, da_id_data, da_fecha, da_temperatura, da_humedad, da_velocidad, da_direccion, da_presion_at) values(?, ?, ?, ?, ?, ?, ?, ?)";

      // create PrepareStatement object
      pstmt = conexion.prepareStatement(query);
      pstmt.setInt(1,1);
      pstmt.setInt(2, siguiente);
      pstmt.setTimestamp(3, new java.sql.Timestamp(cal.getTimeInMillis()));
      pstmt.setFloat(4, 24);//Float.parseFloat(data[4]));
      pstmt.setInt(5,12);//Integer.parseInt(data[3]));
      pstmt.setDouble(6, 23);//Double.parseDouble(data[1]) );
      pstmt.setString(7,"S");// data[2]);
      pstmt.setDouble(8, 762);//Double.parseDouble(data[5]));
     
      int rowCount = pstmt.executeUpdate();
      System.out.println("rowCount=" + rowCount);
    } finally {
      pstmt.close();
      conexion.close();
   }
}//fin del metodo



si alguien ha actualizado mysql desde un evento serial ayuda.

OJO EL MÉTODO ESTA ACTUALIZANDO DESDE UN BOTÓN, mas no cuando ocurre el envento serial.

Saludos y gracias de ante mano por cualquiera ayuda.