Java - Cargar datos de un archivo .txt y Guardar datos de BD de mysql

 
Vista:
Imágen de perfil de Devastador
Val: 47
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Cargar datos de un archivo .txt y Guardar datos de BD de mysql

Publicado por Devastador (15 intervenciones) el 01/11/2020 00:51:30
Cuando intento obtener datos de mi archivo .txt que tiene como separador "|" en la primera columna por asi decirlo no me tira error pero cuando pasa a la siguiente me tira error java.lang.NumberFormalException : For input string "|"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private void cargartxtActionPerformed(java.awt.event.ActionEvent evt) {
    FileReader r;
    try{
        r = new FileReader("C:\\UMG\\Programacion\\Reporte_Incripción.txt");
        BufferedReader buff = new BufferedReader(r);
        String linea;
        for (int i=0; i <array.length; i++){
            linea = buff.readLine();
            String [] valores = linea.split("|");
 
            int num = Integer.parseInt(valores[0]);
            String nom = valores[1];
            String ape = valores[2];
            String carn = valores[3];
            String sex = valores[4];
            int age = Integer.parseInt(valores[5]);
            String cor = valores[6];
            String facu1 = valores[7];
            String talla1 = valores[8];
            String txt = valores[9];
            String mod1 = valores [10];
            Float time = Float.parseFloat(valores[11]);
 
            array[i] = new inscritos (num,nom,ape,carn,sex,age,cor,facu1,talla1,txt,mod1,time);
        }
 
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(rootPane, "Error "+e,"Alerta",JOptionPane.ERROR_MESSAGE);
        return;
    }
 
 
 
}

Ahora en el botón para cargar datos de un tabla de MySQL me no me da ningún error pero solo obtiene los datos de la primera fila y las otras 2 guardadas no

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void cargarbasededatosActionPerformed(java.awt.event.ActionEvent evt) {
    BD g2 = new BD();
    Connection getter;
    getter = g2.getConnection();
    try{
        ps2 = getter.prepareStatement("SELECT numcorredor,nombre,apellido,carnet,sexo,edad,correo,facultad,talla,textoplayera,modalidad,tiempocorr FROM inscritos");
        ResultSet rs2 = ps2.executeQuery();
 
        for (int i=0; i <array.length; i++){
            while (rs2.next()){
            int num = Integer.parseInt(rs2.getString("numcorredor"));
            String nom = rs2.getString("nombre");
            String ape = rs2.getString("apellido");
            String carn = rs2.getString("carnet");
            String sex = rs2.getString("sexo");
            int age = Integer.parseInt(rs2.getString("edad"));
            String cor = rs2.getString("correo");
            String facu1 = rs2.getString("facultad");
            String talla1 = rs2.getString("talla");
            String txt = rs2.getString("textoplayera");
            String mod1 = rs2.getString("modalidad");
            Float time = Float.parseFloat(rs2.getString("tiempocorr"));
 
            array[i] = new inscritos (num,nom,ape,carn,sex,age,cor,facu1,talla1,txt,mod1,time);
            }
        }
    }catch (NumberFormatException | SQLException e) {
        JOptionPane.showMessageDialog(rootPane, "Error al Cargar Base Datos"+e,"Alerta",JOptionPane.ERROR_MESSAGE);
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Cargar datos de un archivo .txt y Guardar datos de BD de mysql

Publicado por Rodrigo (623 intervenciones) el 01/11/2020 01:27:10
En el segundo programa, el while esta dentro un for que modificaria i. El for modifica a i, el while no. Por lo que la instruccion de la linea 24 del segundo programa siempre asigna a la misma posicion, por todas las veces que el while lea. Sospecho que ese while consume todos los registros de la BD y asignas todos ellos a la primera posicion del arreglo.
Tal vez te convendria algo como

1
2
3
4
for( i = 0; rs2.next(); i++) {
  // (se borra el while y luego) leer los datos y asignar al final
  array[i] = new inscritos(...)
}

Renombra "array" por algo que represente lo que guardan, por ejemplo, renombralo a "incritos", y la clase inscritos renombrala para que se llame "Inscrito" (con mayuscula y singular).

El codigo quedaria mas legible asi:

1
2
3
4
for( i = 0; rs2.next(); i++) {
  // leer los datos y asignar al final
  inscritos[i] = new Inscrito(...)
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Devastador
Val: 47
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Cargar datos de un archivo .txt y Guardar datos de BD de mysql

Publicado por Devastador (15 intervenciones) el 01/11/2020 02:43:16
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar