@Override
	public void run() {
		ArrayList<ArrayList<String>> arreglos = null;
		try {
			DataInputStream ois = new DataInputStream(
					socketCliente.getInputStream());
			DataOutputStream oos = new DataOutputStream(
					socketCliente.getOutputStream());
			System.out.println("DEBUG: A punto de leer la consulta!");
			String consultaJSON = ois.readUTF();
			System.out.println("DEBUG: Consulta leida!");
			List<String> listaDeConsulta = QueryManager
					.decodificarQuery(consultaJSON);
			System.out.println("DEBUG: Consulta decodificada!");
			String respuesta;
			if (crearConexion(listaDeConsulta.get(0))) {
				System.out.println("DEBUG: Conexion creada!");
				String consulta = listaDeConsulta.get(1);
				ResultSet resultado = enviarConsulta(consulta);
				if (resultado != null) {
					arreglos = respuestaDeQueryAListas(resultado);
				}
				if (error)
					respuesta = QueryManager.crearError(msgError);
				else if (esConsulta)
					respuesta = QueryManager.crearRespuesta(arreglos.get(0),
							arreglos.get(1));
				else
					respuesta = QueryManager
							.crearRespuestaDeActualizacion(String
									.valueOf(filasActualizadas));
			} else {
				respuesta = QueryManager.crearError(ERROR_DB);
			}
			oos.writeUTF(respuesta);
			ois.close();
			oos.close();
			if (query != null)
				query.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}