Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NetJava

#151
Java / Re: Crear un ejecutable con Netbeans
24 Marzo 2011, 20:26 PM
Buenas,

Le das a build y a build main proyect (F11), automaticamente el netbeans te genera una carpeta dist en donde tienes tu proyecto, el ejecutable ya sabes que tendrá extensión .jar.

Saludos, espero que sea así!!!!
#152
Java / Re: Duda funcionamiento Thread/Hilos
24 Marzo 2011, 18:03 PM
Buenas,

pensaba que el problema  ya estaba solucionado, pero no... jajajaja, llevo un buen rato intentando encontrar una solución y no consigo nada de nada. El problema esta en que no me conecta a la BD directamente, se que el código conecta perfectamente pero por algún motivo ahora que lo estoy utilizando en otra aplicación que he empezado de cero, y con Thread, no funciona... solo se suponía que tenia que copiar y pegar el código y ya funcionaria...
Código (java) [Seleccionar]


private String drv1 = "com.mysql.jdbc.Driver";
private String db1 = "jdbc:mysql://localhost:3306/bd_diccionario1";
private String userpass1 = "root";

        private Connection conectar1;
private Statement st1;

public DBManagement(){
try{
Class.forName(drv1);
conectar1 = DriverManager.getConnection(db1, userpass1, userpass1);
st1 = conectar1.createStatement();
}catch(Exception e){
}
}



Al llamar al constructor para crear un objeto de esta clase salta la excepcion con un mensaje "com.mysql.jdbc.Driver". Bueno como había dicho esto lo hago desde un Thread.

Muchas de antemano. Seguiré buscando  :-\
#153
Java / Re: Duda funcionamiento Thread/Hilos
23 Marzo 2011, 21:15 PM
Buenas,

pues cierro esta consulta por que creo que al final funciona, aunq saltan excepciones pero creo que ya lo he pillado y ya rula. Muchas gracias y saludos!!

P.D: No pongo resultado, por que creo que funcionaba más o menos desde el principio.
#154
Java / Re: Duda funcionamiento Thread/Hilos
23 Marzo 2011, 19:26 PM
Buenas,

muchas gracias. Pregunto un poco más. He hecho un ejemplo para para poder comprender más el funcionamiento. En el ejemplo únicamente hay 3 "JLabel" que realizan una cuenta ascendente 0/100000000, cada uno con sus botones de empezar, detener y seguir. Aun que estos dos últimos me da igual por el momento.

- El primer "JLabel" con su botón de comienzo sigue el proceso normal de la aplicación, no pasa por ningún hilo.

- Los dos siguientes pasan por hilo, cada uno en el momento en el que se le de a -empezar, y empieza la cuenta en ese orden.

Tengo una clase "hilo" que en su méto "run" llama a la clase algoritmo donde empieza la secuencia. El código de la clase "hilo" es el siguiente.

Código (java) [Seleccionar]

package PackEjemThread1;

import javax.swing.*;

public class hilo extends Thread{

private algoritmo algo_0 = new algoritmo();
private boolean terminar_0 = false;
private JLabel jlbl_0 = new JLabel();
//private int a = 0;

public hilo(JLabel jlbl_0){
//this.a = a;
this.jlbl_0 = jlbl_0;
}

public void run(){

while(!terminar_0){
//lo que se ejecutara.
algo_0.generarsecuencia(jlbl_0);
//this.terminar_0 = true;
}
}

public void setTerminar0(boolean terminar0){
this.terminar_0=terminar0;
}
}


Ahora el código de la clase "algoritmo":
Código (java) [Seleccionar]

package PackEjemThread1;

import java.*;
import java.awt.*;
import javax.swing.*;

public class algoritmo {
public algoritmo(){}

public void generarsecuencia(JLabel jlbl){
for(int i = 0; i <= 100000000; i++){
for(int a = 0; a < 100000000; a++){
for(int z = 0; z < 100000000; z++){

}
}
jlbl.setText(i+"/100000000");
}
}

public void generarsecuencia1(JLabel jlbl){
for(int i = 0; i <= 100000000; i++){

jlbl.setText(i+"/100000000");
}
}
}



La clase "algoritmo" no tiene nada especial. Bueno lo que he podido comprobar es que funcionan en paralelo y es perfecto. Pero en el ejemplo donde realmente querría utilizarlo no es así en el momento en el que empieza a trabajar con la BD.

Bueno pues realizo una pregunta más especifica. En el código que mostré al principio se ve que primero se trabaja con una .txt, y después la información la paso a la BD. Exactamente en el .txt hay por ejempo 500000 palabras, y una a una la cotejo con la BD y si no existe la guardo. El problema es que con el archivo se trabaja bien, pero en el momento de guardar en la BD saltan excepciones por todos lados... Cosa que no pasa si no utilizo hilos... Hay que seguir un orden especial con las clases que se llaman desde el método "run()" de la clase "hilo"¿?¿?
Se os ocurre por que saltán excepciones en la clase que conecta con la BD¿?

Bueno estoy escribiendo mucho, pero ya de paso termino bien. Como veis en el código anterior "ALGORIT.FiltradoSeparacion(Contenido);" desde el método se llama a al siguiente código:

Código (java) [Seleccionar]

package PackApliGenerarDiccionario1;

import java.*;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.JOptionPane;

public class DBManagement {

private String drv = "com.mysql.jdbc.Driver";
private String db = "jdbc:mysql://localhost:3306/bd_diccionario1";
private String userpass = "root";
private int idPalabra = 0;
private int MaxIdPalabra = 0;

private Connection Conectar;
private Statement St;

public int valortotal = 0;
private int valorcorrecto = 0;
private int valormomento = 0;

public DBManagement(){
try{
Class.forName(drv);
Conectar = DriverManager.getConnection(db, userpass, userpass);
St = Conectar.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}

public void newCodigo(){
String SQL = "SELECT MAX(idpalabras) FROM palabras;";
try{
ResultSet aux = St.executeQuery(SQL);
aux.next();
idPalabra = aux.getInt(1);
}catch(Exception e){
e.printStackTrace();
}
}

public void fillTable(String dato, JLabel jlbl){
valormomento+=1;
if(Cotejar(dato) == 0){
valorcorrecto +=1;
newCodigo();
idPalabra +=1;
String SQL = "INSERT INTO palabras (idpalabras, palabras) Values ('" + idPalabra + "','" + dato + "');";
try{
St.executeUpdate(SQL);
}catch(Exception e){
e.printStackTrace();
}
}
jlbl.setText(valorcorrecto+"/"+valormomento+"/"+valortotal);
}

public int Cotejar(String d){
String SQL = "SELECT palabras FROM palabras WHERE palabras = '"+ d +"';";
String palabra = "";
int s = 0;
try{
ResultSet aux = St.executeQuery(SQL);
aux.next();
palabra = aux.getString(1);
//JOptionPane.showMessageDialog(null,""+palabra,"Message",JOptionPane.INFORMATION_MESSAGE);
if((palabra == null) || (palabra == "") || (palabra == " ")){
s = 0;
}else{
s = 1;
}
//JOptionPane.showMessageDialog(null,""+s,"Message",JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
ex.printStackTrace();
}
return s;
}

public Statement getSt(){
return St;
}

}




Bueno pues nada, solo recordar que el código funciona en una situación normal, pero no si se hace a través de hilos XD.
Muchas gracias a todos, y sobre todo a los que lean hasta el final este pestiño.

Saludos!!!
#155
Buenas,

estoy haciendo una aplicación que tiene diferentes funciones. Una de ellas es la de leer archivos .txt y guardar su contenido en BD, y lo que estoy haciendo es utilizar hilos para mejorar los tiempos, pero no estoy muy seguro de que estén funcionando bien. Bueno os pregunto una duda bastante básica:

1.- Si dos procesos (en dos hilos) leen de un mismo archivo, lo pueden hacer a la vez¿? O hay que sincronizarlos¿?

2.- Si un hilo se ocupa de un archivo y otro se ocupa de otro archivo ocuparían el tiempo de un solo archivo, no¿? XD Lo que me preocupa es que a la vez están conectando a la BD (creo que no debería pasar nada con la BD en cuanto a sincronizar hilos) y a lo mejor hay hay conflicto.


Código (java) [Seleccionar]

        public void run(){
try{
while(!terminar){
//lo que se ejecutara.
Contenido = ARCHI.LeerArchivo(url);
ALGORIT.FiltradoSeparacion(Contenido);
//this.terminar = true;
}
}catch(Exception ex){
ex.printStackTrace();
}
}


Lo que esta dentro se ejecuta, no¿? Es así de simple parece.

Saludos y muchas gracias!
#156
Buenas,
pues me alegro que te haya servido de algo jajaja!!!

Saludos!
#157
Java / Re: Busqueda binaria.
21 Marzo 2011, 11:46 AM
Buenas,

Para explicarme mejor cuento mi caso. Tengo una base de datos en la que estoy metiendo palabras, haciendo un diccionario. Lo que hago es que una aplicación lea un archivo que contiene un libro, hace los filtros necesarios para limpiar caracteres que no quiero, y después coge las palabras y las mete en la BD comprobando primero si ya existen o no.

Bueno pues después de meter unos 10 libros, querría ordenar alfabéticamente las palabras para luego poder hacer búsquedas. Tu respuesta es lo que buscaba, no sabía que el método compareTo(String) podría resolver el problema. Muchas gracias.

Ahora me planteo que cuando yo ejecuto una query SELECT que tipo de búsqueda se realiza en una BD MySQL...¿? Para poder realizar una búsqueda binaria tendría que cargar en un array toda la tabla...
Creo que no me he planteado esto muy bien. Pero muchas gracias por que me has resuelto la duda.

Saludos!!
#158
Buenas,

desde luego es un tema bastante complicado por decir algo... seguir buscando información. Si la encuentro y estoy a tiempo la colocaré en este mismo lugar.

Gracias y saludos!
#159
Buenas,

Yo lo que tu quieres hacer lo hice en .net, y he supuesto como se tendría que hacer en Java, jajaja la verdad es que yo estoy aprendiendo Java. A ver si esto te puede ayudar un poco más.

_____________________________________________________________________

Código (java) [Seleccionar]
JTextField textField = new JTextField(10);
textField.addKeyListener(new KeyAdapter()
{
  public void keyTyped(KeyEvent e)
  {
     // Verificar si la tecla pulsada se encuentra en la base de datos.
     char caracter = e.getKeyChar();      //Se recogería el valor. Se podría buscar
     //por el carácter o se podían ir agrupando para la búsqueda en la BD.
     //Supongo que aquí es donde se envía la información encontrada por ejemplo
     //a un Combobox para ver todas las opciones.
  }
});


_____________________________________________________________________

Código (sql) [Seleccionar]
SELECT *
FROM Personas
WHERE Persona LIKE '%'"+ ContenidoJjtextfield1 +"'%';


_____________________________________________________________________

Bueno pues espero no haberme confundido, pero creo que sería algo así. Ya que en java no sabía como se hacía he hecho un ejemplo que pensaba que podía funcionar, pero no... En el siguiente ejemplo salta el evento del JTextField cuando se presiona "enter", pero te lo pongo por si... jajajaja.
_____________________________________________________________________


Código (java) [Seleccionar]
package PackEventJTextField;

import java.*;
import java.awt.*;
import javax.swing.*;

public class Interfaz extends JFrame{

private JTextField jTextField1 = new JTextField();
private String memoria=jTextField1.getText();
private BorderLayout esquema;

public Interfaz(){
super("Prueba evento JTextField");

definirventana();
jTextField1.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               jTextField1ActionPerformed(evt);
           }
       });

this.setSize(200,200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void definirventana(){
esquema = new BorderLayout( 1, 1 ); //

// obtener panel de contenido y establecer su esquema
Container contenedor = this.getContentPane();
contenedor.setLayout( esquema );

contenedor.add( jTextField1, BorderLayout.NORTH );

}

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

      if (!memoria.equals(jTextField1.getText())){
        javax.swing.JOptionPane panel=null;
        panel.showMessageDialog(null,"ha cambiado el texto");
     
      }
   }
}

____________________________________________________________________

Saludos!
#160
Java / Busqueda binaria.
17 Marzo 2011, 21:00 PM
Buenas,

Estaba mejorando mis conocimientos, y de pronto he pensando en algoritmos de búsqueda. Es fácil encontrar ejemplos de ese tipo de búsqueda, pero si no los he entendido mal, es solo con números, se ordenan y demás... pero y si se busca por String, el algoritmo sirve¿? O tendría que clasificar por número de caracteres para hacer las particiones en la BD¿? jajaja se me acaba de ocurrir.


Saludos y gracias!