Update avec un select sur une bdd MySql
Résolu/Fermé
A voir également:
- Update avec un select sur une bdd MySql
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Mysql community server - Télécharger - Bases de données
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
2 réponses
problème résolu
parfois on complique les choses........
voila le code
parfois on complique les choses........
voila le code
if (duplicateExists.next()) { System.out.println("je suis ici update"); String sqlUpdate = "UPDATE stock AS ST set ST.qt=(ST.qt +('"+Q+"'))where ST.desig='"+o+"'"; stmt.executeUpdate(sqlUpdate); System.out.println("selection exist"); }
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
12 juin 2016 à 13:25
12 juin 2016 à 13:25
Bonjour,
Il ne faut pas faire des concaténations dans les requêtes SQL comme tu l'as fait par exemple avec
En effet ce genre de code présente une faille de sécurité (injection SQL)
Exemple : Si je fais
Ton update va donc concerner toute ta table, la restriction sur
On pourrait faire pire, comme
Pour se prémunir de ces failles il faut faire des PreparedStatement
Les
Il ne faut pas faire des concaténations dans les requêtes SQL comme tu l'as fait par exemple avec
where desig='"+o+"'"
En effet ce genre de code présente une faille de sécurité (injection SQL)
Exemple : Si je fais
o = "toto' OR 1=1 -- toto";ta requête devient
where desig='toto' OR 1=1 -- toto
Ton update va donc concerner toute ta table, la restriction sur
desigest annulée par le
OR 1=1.
On pourrait faire pire, comme
where desig='toto'; DELETE stock -- toto
Pour se prémunir de ces failles il faut faire des PreparedStatement
String sqlUpdate = "UPDATE stock set qt=((select SUM(ST.qt) AS quant from stock ST)+(?)) where desig=?"; PreparedStatement stmt = con.prepareStatement(sqlUpdate); stmt.setString(1, Q); stmt.setString(2, o); stmt.executeUpdate();
Les
?représentent des paramètres à remplir avec les méthodes setString, setInt, etc.