Autor Tema: Java SQL leer un fichero txt e introducir valores en tabla de MySql Connection  (Leído 2698 veces)

rob25

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Buenas me piden lo siguiente: Necesito realizar un programa que me lea un fichero llamado “personas.txt” y introducir estos valores en la tabla clientes de mySql.

El fichero personas.txt tiene varios INSERT INTO CLIENTES de id, nombre y apellidos.

Yo tengo realizado lo siguiente pero no me funciona:

Código: [Seleccionar]
public class Clientes{

public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {



  String nombredriver ="com.mysql.cj.jdbc.Driver";

  ResultSet rs = null;

   
    int ID = 0;
        String NOMBRE = " ";
        String Apellidos= " ";
        String[] tokens;
       
        FileReader file1 = new FileReader("src/personas.txt");
        BufferedReader buffer1 = new BufferedReader(file1);

        String line = buffer1.readLine();
 
     
      Class.forName(nombredriver);
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/clientes" +
"?useUnicode=true"+
"&serverTimezone=UTC", "root", "root");
      Statement stmt=con.createStatement();
     
     
     
       
     
      while((line = buffer1.readLine()) != null)
            {
                tokens = line.split(",");
                ID = Integer.parseInt(tokens[0]);
                NOMBRE = tokens[1];
                APELLIDOS= tokens[2];
       

                String insertString = "insert into clientes (ID, NOMBRE, APELLIDOS) values ('"+ID+"', '"+NOMBRE+"', '"+APELLIDOS+"'))";
                stmt.executeUpdate(insertString);
            }
       
     
      con.close();
      stmt.close();

}

}
« Última modificación: 17 de Enero 2021, 20:08 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re:Ayuda Java con SQL
« Respuesta #1 en: 29 de Octubre 2020, 00:14 »
No te funciona, pero... ¿Exactamente que te falla?
¿No encuentra el fichero de texto?
¿Lo encuentra pero no lo lee bien?
¿Lo lee bien pero falla al insertar los datos en la BBDD?

Aparentemente, el código parece estar bien, creo...

Lo único que me llama un poco la atención es que la primera lectura de línea se pierde.

Aquí lees la primera línea (marco en negrita):
Citar
              FileReader file1 = new FileReader("src/personas.txt");
              BufferedReader buffer1 = new BufferedReader(file1);

              String line = buffer1.readLine();

Pero lo que se haya leído, se pierde sin haber trabajado con ella, porque luego el bucle while comienzas leyendo otra vez, así que el bucle empieza a trabajar con la segunda línea.
Citar
            while((line = buffer1.readLine()) != null)
               {
                   tokens = line.split(",");
                   ID = Integer.parseInt(tokens[0]);
                   NOMBRE = tokens[1];
                   APELLIDOS= tokens[2];
          

                   String insertString = "insert into clientes (ID, NOMBRE, APELLIDOS) values ('"+ID+"', '"+NOMBRE+"', '"+APELLIDOS+"'))";
                   stmt.executeUpdate(insertString);
               }

Esto puedes evitarlo si en el bucle, haces la lectura de líneas justo al final.
En la condición del while simplemente comprueba si la línea es null. La lectura de nueva línea lo dejas para lo último, cuando ya se haya trabajado con la anterior línea leída

Citar
            while(line != null)
               {
                   tokens = line.split(",");
                   ID = Integer.parseInt(tokens[0]);
                   NOMBRE = tokens[1];
                   APELLIDOS= tokens[2];
          

                   String insertString = "insert into clientes (ID, NOMBRE, APELLIDOS) values ('"+ID+"', '"+NOMBRE+"', '"+APELLIDOS+"'))";
                   stmt.executeUpdate(insertString);
                   //Leemos siguiente línea
                   line = buffer1.readLine()
               }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

rob25

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Re: Ayuda Java con SQL
« Respuesta #2 en: 29 de Octubre 2020, 18:12 »
Vale gracias ya me funciona, otra duda que te quería preguntar tengo una tabla clientes otra tabla stock y otra tabla pedidos, me piden que a partir de un cliente y un stock que es como un producto inserte datos en pedidos a traves de un metodo. Tengo que hacer uso de los placeholders a la hora de insertar.

Mi problema es que no me da ningun error el programa en sí pero no se insertan los datos en la tabla pedidos.

El for llega hasta 5 que son los clientes y stock que hay

Gracias de nuevo

Te adjunto codigo:


Código: [Seleccionar]
package Cliente;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class clientes2{

public static void main(String[] args) throws ClassNotFoundException, SQLException {



String url = "jdbc:mysql://localhost:3307/clientes2" +
"?useUnicode=true"+
"&serverTimezone=UTC";
String nombreDriver = "com.mysql.cj.jdbc.Driver";

String sql = ("INSERT INTO VENTAS VALUES (?,?)");

try {

      Class.forName(nombreDriver);
      Connection con = DriverManager.getConnection(url, "root", "root");
      PreparedStatement pstmt = con.prepareStatement(sql);
     
     
      for(int i=1; i<=5;i++) {
      pstmt.setInt(1, i); //ID CLIENTE
      pstmt.setInt(1, i); //ID STOCK
      }
           
            pstmt.close();
            con.close();

}catch(ClassNotFoundException e){
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
       
}

}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".