Salvar um registro no banco de dados?

8 respostas
kiq095

oi … to com uma duvida aqui …

o meu problema e o seguinte … to fazendo um insert em um banco … so que tenho q conferir antes se e um dado q ja existe no banco … se ele existir eu faço um update se ele nao existir faço um insert …

pra melhorar … meu programa e o seguinte … ele pega dados de um bando de dados e passa pra outro … so que nao quero deletar as tabelas pra depois inserir pois posso perder dados que existem so naquela tabela espescifica … entao eu olho se o dado exite … se existir faço o update se nao um insert…

mais queria um geito melhor pra fazer isso … pois to fazendo assim …

pesquiso no banco com um select e olho se o dado existe se existir colo ele em uma variavel se a variavel for nula e por nao existe nenhum dado … se nao for e por q existe algum dado com aquelas caracteristicas …

assim ta dando certo mais ta meio … sei la … parece ser errado …

e isso que eu queria … por q sei que deve ter 100000 maneiras de fazer isso … queria que alguem me desse outra ideia ou me mostrase algo parecido

8 Respostas

javer

Eu, numa situação dessas faço assim:
Crio uma chave na tabela a ser consultada e vejo se a chave já existe (lembrando que pela chave a pesquisa é mais rápida devido a indexação), simples assim!

kiq095

SIM … SIM

mais meu problema ainda e maior… por os dados que vao ser inserido sao fornecidos pelo usuario …

tipo o sistema imprime os dados para o usuario de uma tabela no banco de dados K ele escolhe os dados e o sistema manda esses dados pro banco Y …
e se o ID for diferente ?

por exe e se o usuario quiser mudar somente o nome e sebrenome do cliente … nao vou ter o id ai procuro por nome por exe …mais nao e bem assim nao …isso e so um exe …

por isso q estou com essa duvida …eu sei q podem ter dados com o mesmo registro tipo nome … podem ter ate 400 nomes iguais … no meu casso ele muda todos os nomes … mais pra minha situaçao aqui isso noa tem problema … no meu caso e tipo se fosse uma correçao de campos … onde ele confere se tem aquele especifico dado e o modifica … podendo ter 10000 iguais …SO que se o dado nao existir tenho q inserir ele …!!! deu pra entender ??

acho que expliquei melhor …

javer

Bom, você vai ter que gastar suas habilidades de analista e ver qual é a melhor solução, já que não temos a própria situação para analisar, por exemplo, “algum” dado tem que ser consistente, como um CNPJ de um cliente, um CPF, uma placa de carro (isso é coisa que nunca muda), se não existe consistência em nenhum campo então não faz sentido guardar a informação.

E

:? Não sei se entendi seu problema cara, mas vc tá querendo reduzir as instruções no banco, é isso? tu tá querendo economizar um select pra ver se o cliente já existe?

Não sei, mas se for, utilize o executeUpdate do Statement que ele irá te retornar um inteiro informando quantas linhas foram atingidas pela instrução, ai tu verifica, se for maior que zero é pq o update resolveu, caso contrário ai tu faz um insert.

Abraço.

kiq095

SIM concordo ...

mais e uma correçao praticamente ...

por exe ...

cliente : eu 
id:1
cpf:[telefone removido]
valor: 40



cliente : vc 
id:2
cpf:[telefone removido]
valor: 40



cliente : ele 
id:3
cpf:[telefone removido]
valor: 30

cliente : ele 
id:4
cpf:[telefone removido]
valor: 30

certo vamos supor q nao pode ser mais o valor 40 entao tenho q mudar somente ele ..!!
ou q tenho que corigir o nome ele pra ELE ....
ou mudar o valor 30 do cliente ele ... todos tem dados espscificos mais nao estou usando ..

e quero corrigir o campo 50 .. nao tem entao vou ter q inserir

cliente : NOS 
id:5
cpf:123456567
valor: 50

agora entendeu ????

kiq095

evandrosantos:
:? Não sei se entendi seu problema cara, mas vc tá querendo reduzir as instruções no banco, é isso? tu tá querendo economizar um select pra ver se o cliente já existe?

Não sei, mas se for, utilize o executeUpdate do Statement que ele irá te retornar um inteiro informando quantas linhas foram atingidas pela instrução, ai tu verifica, se for maior que zero é pq o update resolveu, caso contrário ai tu faz um insert.

Abraço.

otima ideia …!!!
qual comando faz isso ??

qual comando pega esse numero de linhas que foram alteradas ???

javer

PreparedStatement ps = connection..prepareStatement("UPDATE ..."); int idx = 0; ps.setObject(++idx, coisa); ps.setObject(++idx, outraCoisa); ps.setObject(++idx, maisUmaCoisa); int totalLinhasAlteradas = ps.executeUpdate();

kiq095

Valeu …!

deu certo tambem e fico melhor assim …!!!

Criado 30 de março de 2011
Ultima resposta 30 de mar. de 2011
Respostas 8
Participantes 3