[RESOLVIDO] Como salvar um gerador de números no banco de dados mySQL

Bom dia à todos!

Sou nova no desenvolvimento Java!

Encontrei o código abaixo em um tópico do próprio GUJ, porém não sei como salvar este item no banco de dados.

Segue abaixo o código.

[code]public void geradorNumeros() {
Random gerarNumeros = new Random();
int armazena;
int contador = quant * 5;

    for (int i = 1; i <= contador; i++) {

        armazena = 1 + gerarNumeros.nextInt(11);

        System.out.printf("%d", armazena);
     
        if (i % 5 == 0) {

            System.out.println();

        }

    }[/code]

A cada vez que o código gerar uma sequencia de números, deve ser gravado no banco.

Este sistema é para geração de Cupons de Desconto.

Caso já tenha este tópico no fórum, vc’s podem me enviar o link… porque eu procurei, mas não encontrei algo que esclarecesse minha dúvida.

Desde já, obrigada! :smiley:

[code]import java.sql.SQLException;
import java.util.Random;

/**
*

  • @author Joatan
    */
    public class testeGujGERAR {
    static private int quant = 1;// define a quant que sera multiplicada por 5 em seu codigo

    public static void main(String arg[]){
    geradorNumeros();//chama seu metodo
    }

    public static void geradorNumeros() { // aqui está o metodo que você pegou no guj , só adptei pra oque ele gerar ser salvo no banco de dados
    Random gerarNumeros = new Random();
    int armazena;
    int contador = quant * 5;
    conexaoBanco con = new conexaoBanco();// usa a sua conexao com o banco de dados
    con.conectarBanco();//conecte
    for (int i = 1; i <= contador; i++) {

         armazena = 1 + gerarNumeros.nextInt(11);  
         try {
             con.executarQuery("SELECT * from SUA TABELA");// atualize
             con.st.executeUpdate("insert into SUA TABELA(SEU CAMPO) values('"+armazena+"')");// salve
             System.out.println(armazena+ " - salvo com sucesso no banco de dados");
         } catch (SQLException ex) {
           ex.printStackTrace();
         }
       
        
         if (i % 5 == 0) {  
    
             System.out.println("Processo terminado");  
             con.close();
         }  
    
     }
    

}

}[/code]

Bem,

Leia primeiro esse artigo aqui:

http://www.guj.com.br/articles/7

Depois de conectado e o seu banco configurado, vc deve fazer com que seu for mande salvar no seu banco de dados, no caso, o insert.

Sugiro fazer as seguintes mudanças

[code]public void geradorNumeros() {

    Connection con;
    String sql = "insert into SUA_TABELA (CAMPOS_DA_SUA_TABELA) values ?";//Edite aqui ara colocar direito os campos da sua tabela. a ? serve para o PreparedStatement
PreparedStatement pstm;
    Random gerarNumeros = new Random();
    int armazena;
    int contador = quant * 5;


    for (int i = 1; i <= contador; i++) {

        armazena = 1 + gerarNumeros.nextInt(11);

        pstm.setInt(1,armazena); // coloca o valor da variável na 1ª interrogação
        pstm.execute(); // executa a cláusula SQL

        //System.out.printf("%d", armazena);
     
        if (i % 5 == 0) {

            System.out.println();

        }

      con.close();

    }[/code]

[quote=DZR]Bem,

Leia primeiro esse artigo aqui:

http://www.guj.com.br/articles/7

Depois de conectado e o seu banco configurado, vc deve fazer com que seu for mande salvar no seu banco de dados, no caso, o insert.

Sugiro fazer as seguintes mudanças

[code]public void geradorNumeros() {

    Connection con;
    String sql = "insert into SUA_TABELA (CAMPOS_DA_SUA_TABELA) values ?";//Edite aqui ara colocar direito os campos da sua tabela. a ? serve para o PreparedStatement
PreparedStatement pstm;
    Random gerarNumeros = new Random();
    int armazena;
    int contador = quant * 5;


    for (int i = 1; i <= contador; i++) {

        armazena = 1 + gerarNumeros.nextInt(11);

        pstm.setInt(1,armazena); // coloca o valor da variável na 1ª interrogação
        pstm.execute(); // Não ta faltando um parametro aqui? < 
        //System.out.printf("%d", armazena);
     
        if (i % 5 == 0) {

            System.out.println();

        }

      con.close();

    }[/code][/quote]

pstm.execute(sql); não? ^^

mesmo assim acho que ela começar com statement sera melhor.

Amigos!

Eu tentei fazer desta forma… mas o que acontece é que a variável ‘armazena’ guarda somente o ultimo numero gerado depois que passa pelo ‘for’ pois, após a passagem pelo ‘for’ ele imprime no console o valor gerado… enquanto ele não entra na condição ‘if’ e vai imprimindo no console a sequencia de números gerados. À partir do momento que ele entra no if, ele pula para a próxima linha e gera uma nova sequencia de números.

Se eu colocar da forma que foi exemplificado ele vai salvar no banco um por um dos números gerados, ou seja, se ele gera a sequencia 12345, cada número deste vai ocupar uma linha no banco.

Neste caso eu teria que guardar cada numero gerado e depois que ele entrasse no if é que eu deveria salvar no banco com a sequencia de números gerados.

Não sei bem se neste caso eu devo colocar dentro de um vetor.

[quote=jfrancosoares]Amigos!

Eu tentei fazer desta forma… mas o que acontece é que a variável ‘armazena’ guarda somente o ultimo numero gerado depois que passa pelo ‘for’ pois, após a passagem pelo ‘for’ ele imprime no console o valor gerado… enquanto ele não entra na condição ‘if’ e vai imprimindo no console a sequencia de números gerados. À partir do momento que ele entra no if, ele pula para a próxima linha e gera uma nova sequencia de números.

Se eu colocar da forma que foi exemplificado ele vai salvar no banco um por um dos números gerados, ou seja, se ele gera a sequencia 12345, cada número deste vai ocupar uma linha no banco.

Neste caso eu teria que guardar cada numero gerado e depois que ele entrasse no if é que eu deveria salvar no banco com a sequencia de números gerados.

Não sei bem se neste caso eu devo colocar dentro de um vetor.[/quote]

oque você quer guardar no banco de dados?

Vou ver se consigo explicar melhor…

Quando chamo o método public void geradorNumeros() ele entra no for, passa pelo armazena = 1 + gerarNumeros.nextInt(11); e neste momento ele gera um número (por exemplo 1) e imprime no console System.out.printf("%d", armazena); quando ele volta no for ele gera um outro número que substitui o número anterior que estava na variável ‘armazena’ e imprime no console (por exemplo 2) e assim sucessivamente… vamos supor que ele passa no for 5 vezes e gera a sequencia 12345…

se eu mandar setar no banco a variável ‘armazena’ ele vai setar cada valor em uma linha do banco… sendo que eu preciso guardar valor por valor e algum lugar e setar a sequencia inteira no banco…

Espero que eu tenha conseguido explicar, o que eu preciso.

[quote=jfrancosoares]Vou ver se consigo explicar melhor…

Quando chamo o método public void geradorNumeros() ele entra no for, passa pelo armazena = 1 + gerarNumeros.nextInt(11); e neste momento ele gera um número (por exemplo 1) e imprime no console System.out.printf("%d", armazena); quando ele volta no for ele gera um outro número que substitui o número anterior que estava na variável ‘armazena’ e imprime no console (por exemplo 2) e assim sucessivamente… vamos supor que ele passa no for 5 vezes e gera a sequencia 12345…

se eu mandar setar no banco a variável ‘armazena’ ele vai setar cada valor em uma linha do banco… sendo que eu preciso guardar valor por valor e algum lugar e setar a sequencia inteira no banco…

Espero que eu tenha conseguido explicar, o que eu preciso.[/quote]

[code]
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Random;

/**
*

  • @author Joatan
    */
    public class testeGujGERAR {
    static private int quant = 1;// define a quant que sera multiplicada por 5 em seu codigo
    static String AUX = “”;
    public static void main(String arg[]){
    geradorNumeros();//chama seu metodo
    }

    public static void geradorNumeros() {
    Random gerarNumeros = new Random();
    int armazena;
    int contador = quant * 5;
    conexaoBanco con = new conexaoBanco();// usa a sua conexao com o banco de dados
    con.conectarBanco();//conecte
    for (int i = 1; i <= contador; i++) {

         armazena = 1 + gerarNumeros.nextInt(11); 
          AUX =  AUX +String.valueOf(armazena);
        
    
    
        
         if (i % 5 == 0) {  
    
            try {
             con.executarQuery("SELECT * from SUA TABELA");// atualize
             con.st.executeUpdate("insert into SUA TABELA(SEU CAMPO) values('"+Integer.parseInt(AUX)+"')");// salve
             System.out.println(armazena+ " - salvo com sucesso no banco de dados");
         } catch (SQLException ex) {
           ex.printStackTrace();
         } 
    
         }  
    
     }
    

}

}[/code]

tae espero que eu tenha ajudado ^^ com pode ver oque vc ter que mandar pro banco é o AUX que eu criei pra tranformar a int em string e concatenar tudo depois converter em int de novo.

JoatanGuj, muito obrigada… sua dica me ajudou direitinho…

Era exatamente isto que eu precisava…

Mto obrigada à todos!

Valeu :smiley:

[quote=jfrancosoares]JoatanGuj, muito obrigada… sua dica me ajudou direitinho…

Era exatamente isto que eu precisava…

Mto obrigada à todos!

Valeu :smiley: [/quote]
precisar , estamos ai pra isso :wink: