Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine PostgreSQL-DELETE-Anweisung in Java mit der Meldung „Spalte existiert nicht' fehl?

Warum schlägt meine PostgreSQL-DELETE-Anweisung in Java mit der Meldung „Spalte existiert nicht' fehl?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 10:10:10766Durchsuche

Why Does My PostgreSQL DELETE Statement in Java Fail with

Postgresql-Fehler: „Spalte existiert nicht“ im Java-DELETE-Vorgang

Beim Versuch eines DELETE-Vorgangs mit Java und PostgreSQL kann es zu einem Fehler kommen der Fehler „Spalte ‚Spaltenname‘ existiert nicht.“ Dieses Problem tritt auf, wenn der betreffende Spaltenname Großbuchstaben enthält.

In PostgreSQL müssen Datenbankbezeichner (z. B. Tabellen- und Spaltennamen) in Anführungszeichen gesetzt werden, wenn sie Großbuchstaben enthalten. Dies liegt daran, dass beim Standardschema-Suchpfad die Groß-/Kleinschreibung nicht berücksichtigt wird und durch Anführungszeichen sichergestellt wird, dass der genaue Name verwendet wird.

Lösung:

Um den Fehler zu beheben, platzieren Sie einfach Doppelte Anführungszeichen um den Spaltennamen in der SQL-Anweisung:

String stm = "DELETE FROM hostdetails WHERE \"MAC\" = 'kzhdf'";

Alternativ können Sie die String-Interpolation verwenden, um die SQL-Anweisung dynamisch zu erstellen der zitierte Spaltenname:

String column = "MAC";
String stm = String.format("DELETE FROM hostdetails WHERE \"%s\" = 'kzhdf'", column);

Zusätzliche Überlegungen:

Bei der Verwendung vorbereiteter Anweisungen wird empfohlen, das direkte Festlegen von Abfrageparametern in der SQL-Zeichenfolge zu vermeiden. Verwenden Sie stattdessen die Methoden von PreparedStatement, um die Parameter zu binden:

pst.setString(1, "kzhdf");

Dies verhindert potenzielle SQL-Injection-Schwachstellen und macht den Code wartbarer.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine PostgreSQL-DELETE-Anweisung in Java mit der Meldung „Spalte existiert nicht' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn