Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/01/2009, 10:48
Avatar de Batusai
Batusai
 
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: Relacionar consulta select con threads

Hola de nuevo,

el caso es que sé hacer la consulta MySQL (he probado que funciona) y he encontrado código para hacer los pings pero no sé cómo hacer interactuar ambos códigos. Es debido a mi aún corto conocimiento de Java. Os lo expongo:

LaBaseDatos.java
Código:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;

public class LaBaseDatos {

	//Atributos
	private Connection con;
	private Statement st;
	private String consulta = "SELECT ip FROM equipos WHERE monitorizar='1'";
	private String contar = "SELECT COUNT(ip) FROM equipos WHERE monitorizar='1'";
	
	//Constructor
	public laBaseDatos(){
		// Cargar el controlador
		try{
			Class contr = Class.forName("com.mysql.jdbc.Driver");
			System.out.println(contr.toString());
			
		}catch (ClassNotFoundException cnfe){
			System.out.println("com.mysql.jdbc.Driver");
		}
		//Conectar con la BD
		try{
			//String direccion. Hace referencia a una URL, un recurso de la aplicacion
			Connection micon = DriverManager.getConnection("jdbc:mysql://localhost/Comercio","root","");
			
			//Crear objeto Statement
			Statement st = micon.createStatement();
			this.con = micon;
			this.st = st;
			
		}catch(SQLException sqle){
			System.out.println("Error al establecer la conexion");
		}
	}
	
	//Métodos
	// Ejecuta una consulta de seleccion, devolviendo el objeto "ResultSet"
	//con los datos obtenidos en la consulta
	public ResultSet selecciona (String consulta) throws SQLException{
		
		return this.st.executeQuery(consulta);
		
	}

	public ResultSet elSize (String contar) throws SQLException{
		
		return this.st.executeQuery(contar);
		
	}
	//Obtener el ResultSet
	public ResultSet getResultSet() throws SQLException{
		return this.st.getResultSet();
	}
	//Obtener el conector
	public Connection getCon(){
		return this.con;
	}

}
ElComando.java
Código:
import java.io.*;

public class elComando {
  public static void main(String[] args)
  {
    try
    {
    	String[] command = {"sh","-c","/api/utils/check_fping <<ip>>"};
    	// Se debería cambiar <<ip>> por cada una de las IP's del resulSet
    	final Process process = Runtime.getRuntime().exec(command);
    	new Thread()
    	{
    		public void run()
    		{
    			try{
    				InputStream is = process.getInputStream();
    				byte[] buffer = new byte[1024];
    				for(int count = 0; (count = is.read(buffer)) >= 0;)
    				{
    					System.out.write(buffer, 0, count);
    				}
    			}
    			catch(Exception e)
    			{
    				e.printStackTrace();
    			}
    		}
    	}.start();
    	new Thread()
    	{
    		public void run()
    		{
    			try{
    				InputStream is = process.getErrorStream();
    				byte[] buffer = new byte[1024];
    				for(int count = 0; (count = is.read(buffer)) >= 0;)
    				{
    					System.err.write(buffer, 0, count);
    				}
    			}
    			catch(Exception e)
    			{
    				e.printStackTrace();
    			}
    		}
    	}.start();
    	
    	int returnCode = process.waitFor();
    	System.out.println("Return code = " + returnCode);
    }
    catch (Exception e)
    {
    	e.printStackTrace();
    }
  }
}
¿Debo crear una nueva clase para hacerlos interactuar o puedo hacerlo directamente en el Main?

Cualquier ayuda sería muy agradecida. Saludos.