JDBC insérer ou de mettre à jour la pratique
J'ai besoin d'insérer un enregistrement dans la table si le dossier n'existe pas, et pour mettre à jour un enregistrement si l'enregistrement existe dans la table.
Bien sûr, je peux écrire:
p-code:
SELECT * FROM table1 WHERE id='abc' by JDBC
if(exists)
UPDATE table1 SET ... WHERE id='abc' by JDBC;
else
INSERT INTO table1... by JDBC;
Cependant, je ne pense pas que le code est élégant.
Sinon, je peux aussi l'écrire de cette façon:
p-code:
int row = Statement.executeUpdate("INSERT INTO table1...", 2);
if(row==0)
update table1 SET ... WHERE id='abc' by JDBC;
Pensez-vous de la dernière façon est mieux et plus vite? Merci!
EDIT: dans MYSQL
OriginalL'auteur | 2011-06-06
Vous devez vous connecter pour publier un commentaire.
Cela dépend de quel type de base de données que vous utilisez et si oui ou non vous pouvez prendre avantage de la base de données de caractéristiques spécifiques. MySQL par exemple, vous pouvez effectuer les opérations suivantes:
Cependant, le ci-dessus n'est pas standard (SQL-92) conforme. C'est, il sera plus susceptible de ne pas fonctionner sur toutes les bases de données. En d'autres termes, vous devez coller avec le code que vous avez écrit. Il pourrait ne pas sembler élégant, mais c'est probablement la plus sûre solution pour aller avec.
OriginalL'auteur sbrattla
Vous voudrez peut-être regarder à l'aide du SGBD pour faire le chèque à l'intérieur d'un seul état, c'est à dire utiliser le SQL EXISTE condition:
WHERE EXISTS
ouWHERE NOT EXISTS
OriginalL'auteur planetjones
Peut-être que la base de données que vous utilisez a une insérer ou mettre à jour fonction qui calcule automatiquement pour vous. Dans DB2, vous pouvez utiliser de FUSION par exemple. Voir ici
OriginalL'auteur Kai
C'est probablement la raison pour basculer de l'un des populaires solutions d'ORM (Hibernate, Toplink, iBatis). Ces outils de "connaître" les divers dialectes SQL et d'optimiser vos requêtes accrodingly.
OriginalL'auteur AlexR