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