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

Clase: BBDD.java

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


public class BBDD {

	//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'";
	private ResultSet rs;
	
	//Constructor
	public BBDD(){
		// 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
			this.con = micon;
			Statement st = micon.createStatement();
			this.st = st;
			ResultSet rs = st.executeQuery (consulta);
			// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla. 
			while (rs.next()) 
			{ 
			    System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3)); 
			}
		}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;
	}

	public Connection getIP(){
		// NI IDEA DE QUÉ PONER AQUÍ
	}

}
y también una clase llamada Ping.java

Código:
import java.io.InputStream;

public class Ping {
  public static void main(String[] args)
  {
    try
    {
    	String ip = BBDD.getIP();
    	String cadena = "/api/utils/check_fping " + ip;
    	String[] command = {"sh","-c",cadena};
    	// Se debería cambiar <<ip>> por cada una de las IP's que salgan 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();
    }
  }
}
Cualquier pista de por qué me falla la aplicación y cómo solucionarlo sería muy agradecida.

Saludos y gracias de antemano.