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

9 respostas
J

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.

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();
 
            }

        }

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! :D

9 Respostas

JoatanGuj
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();
            }  
  
        }
    
}

}
DZR

Bem,

Leia primeiro esse artigo aqui:

[url]http://www.guj.com.br/articles/7[/url]

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

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();

        }
JoatanGuj
DZR:
Bem,

Leia primeiro esse artigo aqui:

[url]http://www.guj.com.br/articles/7[/url]

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

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();

        }

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

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

J

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.

JoatanGuj

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.

oque você quer guardar no banco de dados?

J

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.

JoatanGuj
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.

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();
            } 
  
            }  
  
        }
    
}

}

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.

J

JoatanGuj, muito obrigada… sua dica me ajudou direitinho…

Era exatamente isto que eu precisava…

Mto obrigada à todos!

Valeu :smiley:

JoatanGuj

jfrancosoares:
JoatanGuj, muito obrigada… sua dica me ajudou direitinho…

Era exatamente isto que eu precisava…

Mto obrigada à todos!

Valeu :smiley:


precisar , estamos ai pra isso :wink:

Criado 8 de setembro de 2011
Ultima resposta 9 de set. de 2011
Respostas 9
Participantes 3