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;
Connectionconexao;Statementcanal;if(conecta()==1){
intnumero=0;numero=numero+1;try{
Stringsql="INSERT INTO tbprontuario (numero) VALUES ( );";canal.executeQuery(sql);System.out.println("Dados inserido com sucesso");}catch(Exceptione){
System.out.println("Erro");}
}
desconecta();
minha classe conecta:
publicintconecta(){try{//Carregar o Driver JDBCClass.forName("com.mysql.jdbc.Driver");//Fazendo a Conexãoconexao=DriverManager.getConnection("jdbc:mysql://localhost/prontuario","root","661669");//Criando o canal de comunicaçãocanal=conexao.createStatement();return1;}catch(Exceptione){System.out.println(e.getMessage());return0;}}//Desconectar com o Banco de Dadospublicintdesconecta(){try{canal.close();conexao.close();return1;}catch(Exceptione){System.out.println(e.getMessage());return0;}}
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:
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
gardussi
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:
TRUNCATETABLEtbprontuario
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
gardussi
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:
selectmax(nomeCampoAutoIncrement))fromtabela
Apartir dai vc faz uma uma nova query buscando pelo id que retornou