Preciso inserir uma pessoa no banco de dados, porém preciso ter certeza de que ela foi inserida. Tem alguma coisa que retorne que o registro foi inserido?
estou usando o PreparedStatement
Preciso inserir uma pessoa no banco de dados, porém preciso ter certeza de que ela foi inserida. Tem alguma coisa que retorne que o registro foi inserido?
estou usando o PreparedStatement
Como que voce esta inserindo o registro no banco?
manda o codigo por favor
(Entre as tags [Code])
É o seguinte, o banco esta zuado e não tem primary key... então qndo duas pessoas inserem ao mesmo tempo da pau de primary key
por isso, tenho q testar, se o registro inseriu... se inseriu beleza, senão soma 1, senão soma 2, senão soma 3...
PreparedStatement ps;
String sql = "insert into pessoa (id_pessoa, nome, tipo, posto, email, estadocivil, dtnascimento, usuario, terminal, dt_cadastrou) values (?,?,?,?,?,?,?,?,?,?)";
ps = con.prepareStatement(sql);
ResultSet rs;
String sql1="select max(id_pessoa) as ultimo from pessoa";
ps = con.prepareStatement(sql1);
rs=ps.executeQuery();
int ultimo=rs.getInt("ultimo");
ultimo++;
try{
ps.setInt(1, pessoa.setId(rs.getInt(ultimo)));
ps.setString(2, pessoa.getNome());
ps.setString(3, pessoa.getTipo());
ps.setString(4, pessoa.getPosto());
ps.setString(5, pessoa.getEmail());
ps.setString(6, pessoa.getEst_civil());
ps.setDate(7, new Date(pessoa.getDtnascimento().getTimeInMillis()));
ps.setString(8, pessoa.getCarteirinha());
ps.setString(9, "web");
ps.setDate(10, new Date(Calendar.getInstance().getTimeInMillis()));
ps.executeUpdate();
Na documentação do PreparedStatement diz que o executeUpdate() retorna o número de linhas que foram alteradas! Sendo assim se uma pessoa foi inserida ela vai retornar 1.
Olha a documentação ai: http://download.oracle.com/docs/cd/E17476_01/javase/1.3/docs/api/java/sql/PreparedStatement.html#executeUpdate%28%29
Olá ps.vale,
essa confirmação seria somente para confirmação sua ou você gostaria que aparecesse algo na tela???
Uma opção seria voce colocar um try cath e dentro do try colocar o ps.execute e logo em seguida um System.out com uma mensagem.
Isso resolveria seu problema?
Uma dúvida, você já testou seu código???
Achei ele um tanto quanto suspeito :? :?
Bjs!
<blockquote>
ResultSet rs;
String sql1=“select max(id_pessoa) as ultimo from pessoa”;
ps = con.prepareStatement(sql1);
rs=ps.executeQuery();
int ultimo=rs.getInt(“ultimo”);
ultimo++; </blockquote>
Esse código seu pode dar um grande problema. Vc está controlando a chave primária (id_pessoa) na unha.
Imagine o seguinte caso tabela pessoa e tabela Filhos (onde a referencia é a coluna id_pai):
Pessoa (Com id_pessoa=10)
Filhos (Com id_Pai=10) (pai=pessoa)
Se alguém fizer um código que exclua a pessoa 10 e não exclua os filhos da mesma, vai dar problema.
Pq quando vc inserir uma nova pessoa, seu sistema vai calcular que a pessoa com maior id é a de codigo 9, com isso, vai inserir uma pessoa de código 10 que automaticamente ganhará filhos.
Deixe o controle de chaves primárias com o próprio banco de dados.
ThgVieira, obrigada vou ler sim, quem sabe resolva meu problema >.<
dsystem, testei sim, e tem um erro sim
ps.setInt(1, pessoa.setId(rs.getInt(ultimo)));
mudei para ps.setInt(1,ultimo);
e funcionou, mas obrigada pela resposta. Tentei colocar diversos try catch, mas não funcionou, vou tentar novamente usando recursividade.
jakefrog
obrigada pela resposta, eu sei que é uma merda controlar a primary key na unha… mas é o seguinte, preciso apenas tapar um buraco, o criador do banco de dados, fez e migrou 300 mil registros sem utilizar identity(ou qualquer coisa pra controlar a primary key) e relacionamento no banco de dados… imagina a merda! Então quando duas pessoas tentam inserir no banco de dados, ele dá pau de primary key e no momento não podemos alterar a estrutura do banco, a “solução” enquanto não arrumamos essa cagada no banco de dados, foi essa tentar inserir, se não der somar um, até conseguir inserir. E no caso deste software a situação que você imaginou não existe, porque não são excluídos registros fisicamente, quando o registro deve ser excluído ele fica com uma flag excluído, mas não pode ser excluído fisicamente do banco de dados, apenas logicamente.
ps.vale,
não sei se vai te adiantar algo mas, criei um tópico ontem (que por sinal já foi resolvido), onde eu também queria que aparecesse uma mensagem de ok depois de inserir um dado no db. Postei meu código lá, se quiser dar uma olhada, fica a vontade.
O link é http://www.guj.com.br/posts/list/213428.java
Um abraço!