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.
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:
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.
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 [Seleccionar]
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 [Seleccionar]
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.