Maison >base de données >tutoriel mysql >Pourquoi mon instruction PostgreSQL DELETE en Java échoue-t-elle avec « La colonne n'existe pas » ?
Erreur Postgresql : "La colonne n'existe pas" dans l'opération Java DELETE
Lors de la tentative d'une opération DELETE à l'aide de Java et PostgreSQL, on peut rencontrer l'erreur "la colonne 'nom_colonne' n'existe pas." Ce problème survient lorsque le nom de colonne en question contient des lettres majuscules.
Dans PostgreSQL, les identifiants de base de données (par exemple, les noms de table et de colonne) doivent être mis entre guillemets s'ils contiennent des caractères majuscules. En effet, le chemin de recherche du schéma par défaut n'est pas sensible à la casse et les guillemets garantissent que le nom exact est utilisé.
Solution :
Pour résoudre l'erreur, placez simplement guillemets doubles autour du nom de la colonne dans l'instruction SQL :
String stm = "DELETE FROM hostdetails WHERE \"MAC\" = 'kzhdf'";
Vous pouvez également utiliser l'interpolation de chaîne pour créer dynamiquement le SQL avec le nom de colonne cité :
String column = "MAC"; String stm = String.format("DELETE FROM hostdetails WHERE \"%s\" = 'kzhdf'", column);
Considérations supplémentaires :
Lors de l'utilisation d'instructions préparées, il est recommandé d'éviter de définir les paramètres de requête directement dans la chaîne SQL. Utilisez plutôt les méthodes de PreparedStatement pour lier les paramètres :
pst.setString(1, "kzhdf");
Cela évite les vulnérabilités potentielles d'injection SQL et rend le code plus maintenable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!