Maison >base de données >tutoriel mysql >Pourquoi mon instruction PostgreSQL DELETE en Java échoue-t-elle avec « La colonne n'existe pas » ?

Pourquoi mon instruction PostgreSQL DELETE en Java échoue-t-elle avec « La colonne n'existe pas » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-19 10:10:10766parcourir

Why Does My PostgreSQL DELETE Statement in Java Fail with

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn