MySql, Erro

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;

[code]
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();[/code]

minha classe conecta:

[code]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;
}
}[/code]

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.

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

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

[quote=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"); }[/quote]

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

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?

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

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

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?

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