MySql, Erro

8 respostas
G
Eu to com um problema na hora de fazer a inserção no Mysql, eu tenho um campo Numero- bigint, auto increment, primariKey A tabela possui apenas esse campo, eu quero inserir ele apor gerar um relatorio no banco de dados so q eu ñ to conseguinto eu to fazendo o seguinte;
Connection conexao;
 Statement canal;

if(conecta() == 1)
    {
            int numero = 0;
            numero  = numero + 1;
        try{
            String sql = "INSERT INTO tbprontuario (numero) VALUES ( );";
            
            canal.executeQuery(sql);
            System.out.println("Dados inserido com sucesso");
        }catch(Exception e){
            System.out.println("Erro");
        }
    
    }
    desconecta();
minha classe conecta:
public int conecta(){
        try{
            //Carregar o Driver JDBC
           Class.forName("com.mysql.jdbc.Driver");
           //Fazendo a Conexão
           conexao = DriverManager.getConnection("jdbc:mysql://localhost/prontuario","root","661669");
           //Criando o canal de comunicação
           canal = conexao.createStatement();
           return 1;
           
        }catch(Exception e)
        {
            System.out.println(e.getMessage());
            return 0;
        }
        
    }
    
    //Desconectar com o Banco de Dados
    public int desconecta(){
        try{
            canal.close();
            conexao.close();
            return 1;        
    }catch(Exception e)
    {
        System.out.println(e.getMessage());
        return 0;
    }
    }
Eu ñ to conseguinto inserir, o q eu quero é q cada vez q gerar um relatorio ele insira um numero no banco, q esse campo é o numero do prontuario, so q eu ñ to conseguindo fazer ele funcionar, ele conecta com o banco, a conxão ta funcionando so q a query do insert ta dando erro, alguem pode me ajudar.

8 Respostas

paulovittor23

Não vou discutir a lógica do que você está tentando fazer, mas só de ver uma tabela que só tenha o campo Id me parece no mínimo muitoo estranho :shock:

Mas caso queira inserir o próximo valor, faça isso:

INSERT INTO nomeSeuBanco.tbprontuario (numero) VALUES((
  SELECT AUTO_INCREMENT
  FROM information_schema.TABLES TBL
  WHERE TBL.TABLE_SCHEMA='nomeSeuBanco' AND TBL.TABLE_NAME='tbprontuario' LIMIT 1
));
G

kara eu fiz isso q vc me passou mas ñ funcionou ta na mesmo, eu fiz dessa maneira:

try{ String sql = "INSERT INTO prontuario.tbprontuario (numero) VALUES((SELECT AUTO_INCREMENT FROM information_schema.TABLES TBL WHERE TBL.TABLE_SCHEMA ='prontuario' AND TBL.TABLE_NAME='tbprontuario' LIMIT 1)); "; canal.executeQuery(sql); System.out.println("Dados inserido com sucesso"); }catch(Exception e){ System.out.println("Erro"); }

paulovittor23

gardussi:
kara eu fiz isso q vc me passou mas ñ funcionou ta na mesmo, eu fiz dessa maneira:

try{ String sql = "INSERT INTO prontuario.tbprontuario (numero) VALUES((SELECT AUTO_INCREMENT FROM information_schema.TABLES TBL WHERE TBL.TABLE_SCHEMA ='prontuario' AND TBL.TABLE_NAME='tbprontuario' LIMIT 1)); "; canal.executeQuery(sql); System.out.println("Dados inserido com sucesso"); }catch(Exception e){ System.out.println("Erro"); }

Hum…acho que peguei o erro :lol:

Vc tá dando um:

canal.executeQuery(sql);

e na verdade qqr operação de atualização (INSERT/UPDATE/DELETE) tem que ser feita usando:

canal.executeUpdate(sql);

Abraço

G

Kara ta dando outro problema, ta acontecendo o seguinte na hora q ele insere o numero no banco de dados ele entra com uma numeração auta, tipo 21222 e assim por diante, eu queria q ele começasse do numero 1 vc sabe como faz isso?

paulovittor23

Pra fazer isso basta zerar a sequência associada…
Use o comando TRUNCATE do mySql… além de limpar todos as tuplas/registros ele zera o auto_increment.

Isso deve resolver:

TRUNCATE TABLE tbprontuario

Eu tentei alterar pela tabela information_schema, mas mesmo dando todos os privilégios para o meu usuário eu não consegui alterar a sequência, deve ser por questões de segurança…

Abraço

maiconramones

gardussi poderia dar mais detalhes do que você está tentando fazer??

G

Kara vlw eu ja consegui resolver, o paulo ja me ajudou, eu so to com um problema agora q é como eu faço para pegar o ultimo registro no banco e jogar para um JtextFeild?

maiconramones

Bom seguinte, pra você buscar o ultimo registro você tem que ter ou um campo auto incremento no seu banco ou um campo que guarda a data e a hora que o registro foi inserido no bd… (é mais facil com auto increment hehehe)

Algo do tipo:

select max(nomeCampoAutoIncrement)) from tabela

Apartir dai vc faz uma uma nova query buscando pelo id que retornou

Criado 6 de fevereiro de 2008
Ultima resposta 13 de fev. de 2008
Respostas 8
Participantes 3