2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
391
391
EMPFEHLEN
-
Hallo,
ich habe ein kleines Problem mit postgresql. Ich habe einen Table bei dem eine Spalte in Anführungszeichen gestzt ist. Ich kann über JDBC keinen Insert befehl abfeuern. Ich bekomme den folgenden Fehler:
Fehlermeldung:
Code java:1 2 3 4
:::: Sended SQL Statement: INSERT INTO ident (vorname, "name", sortname, bem) VALUES ('dfg', 'dgdfg', 'dgdfg, dfg', 'dg') :::: org.postgresql.util.PSQLException: Die Anweisung wurde geschlossen. SQL-State: 55000 ErrorCode: 0
Die Tabelle sieht wie folgt aus:
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
CREATE TABLE ident ( identnr serial NOT NULL, vorname CHARACTER(30), "name" CHARACTER(100), sortname CHARACTER(20), akfz CHARACTER(3), bland CHARACTER(2), geschl CHARACTER(1), anti CHARACTER(25), antizudtxt CHARACTER(30), bem CHARACTER(255), t_rolle CHARACTER(1), t_gebdat DATE, t_mtknr INTEGER, titel_nachgestellt CHARACTER(25) )
Feuere Ich den Insert "INSERT INTO ident (vorname, "name", sortname, bem) VALUES ('dfg', 'dgdfg', 'dgdfg, dfg', 'dg')" auf der Datenbank ab funktioniert es. Das Problem liegt an den Anführungszeichen der Spalte "name". Wie muss ich den SQL abfeurn, damit er angenommen wird?
Danke
AndyGeändert von Andyx1975 (27.10.11 um 16:24 Uhr)
-
27.10.11 16:13 #2SE Tutorials.de Gastzugang
Mal ne GANZ BLÖDE Frage : warum hast du die Spalte auch so benannt ?
Das ergibt keinen Sinn *außerdem wäre das glaube ich sogar ein ungültiges SQL-Statement*.
Auch finde ich die Fehlermeldung sehr sonderlich ...
Du bekommst eine Exception mit dem Error-Code 0 ? ... Da stimmt was nicht.
Auch wäre der relevante Code ganz hilfreich.
btw : für SQL-Statements kannst du auch das [sql][/sql] Tag-Pair verwenden.
-
hey danke...also ich habe die spalte nicht so genannt. Ich greife hier auf eine bestehende Datenbank zurück, die nicht von mir ist. Postgresql setzt die Anführungszeichen automatisch weil "name" ein schlüsselbegriff ist.
Der code sieht wie folgt aus:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
try { sqlQuery = "INSERT INTO ident (vorname, \"name\", sortname, bem)" + " VALUES ('" + vorname + "', '" + name + "', '" + sortname + "', '" + login + "')"; System.out.println( " :::: Sended SQL Statement: " + sqlQuery + " ::::" ); temp = DBConnection.stat.executeUpdate( sqlQuery ); saveSuccess = true; } catch ( SQLException e ) { DBConnection.SQLExceptions( e ); JOptionPane.showConfirmDialog( null, "Ein unerwarteter Datenbankfehler ist aufgetreten:\n" + e, "Datenbankfehler", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE ); }
-
27.10.11 16:29 #4SE Tutorials.de Gastzugang
Achso ... naja .. ich kenne PostGreSQL nur vom Namen ... mit gearbeitet habe ich noch nicht.
Aber um im SQL92-Standard zu bleiben sollte dein Query ungefähr so aussehen :
Zumindest würde so ein INSERT-Query bei MySQL aussehen.Code sql:1
INSERT INTO `ident` ('vorname', 'name', 'sortname', 'bem') VALUES ('vorname', 'name', 'sortname', 'bem');
-
Danke für dein Feedback....leider funktioniert das bei Postgres und JDBC nicht. Ich hatte den Fall schoneinmal, finde aber nichts mehr dazu und weiss nicht mehr wie ich es gelöst hatte. Die Anführungszeichen haben hier eine Sonderstellung mit der der JDBC nicht einfach zurecht kommt.
-
27.10.11 21:56 #6SE Tutorials.de Gastzugang
Hmm .. wie sieht es denn mit anderen Postgres-Editoren aus ? *Kenne mich da ja nicht so aus.*
Hast du schon mal versucht mit diesen ein Query zu erzeugen und dies dann zu über nehmen ?
*Für MySQL gibts ja z.B. phpMyAdmin der einem die ausgeführten Queries auf wunsch auch anzeigt *zumindest bisher ... in der aktuellen Version wurde das entfernt*.
Oder das MySQL-Eigene Tool Workbench ...
Gibt es sowas auch für Postgres ? *Sollte es eigentlich.*
Dann bau dir da doch mal ein funtkionierendes Beispiel-Query zusammen und probiere dies mit JDBC aus ... wenn das nicht funktioniert versuche mal den JDBC-Driver zu wechseln *falls möglich*.
-
Ja es gibt PGAdmin...über den kann ich den SQL auch abfeuern. Er legts an...also liegt das Problem beim JDBC Treiber. Aber ich habe gerade eben mein Problem gefunden. Ich hatte in einer anderen Methode die Datenbankverbindung geschlossen und dann in einer neuen die Verbindung nicht neu aufgebaut
-
28.10.11 12:10 #8SE Tutorials.de Gastzugang
Sowas passiert =D
Das wurde so aber leider auch mir aus der Exception nicht ersichtlich. Und leider auch nicht aus dem Stück Code was du gepostet hast.
Ich hätte aber dazu eine Frage : warum schließt du die Verbindung und baust eine neue auf wärend deine App immer noch läuft ? Hat es einen besonderen Hintergrund *flush , User-Change , was auch immer* oder warum ? Ich persönlich halte eine Verbindung zur DB so lange offen wie eine Instanz meiner App läuft ... und lege sie auch so als super-global an das ich von überall in meiner App darauf *natürlich synchronisiert* zugreifen kann.
Ähnliche Themen
-
[DB2/JDBC] - Nur einmal INSERT möglich ?
Von AvS im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 20.11.08, 20:55 -
SqlException beim Insert in MySQL DB mittels JDBC
Von XesperantoX im Forum JavaAntworten: 2Letzter Beitrag: 04.05.08, 12:54 -
JDBC- mehrere INSERT auf einmal
Von JoeBloggs im Forum JavaAntworten: 2Letzter Beitrag: 20.10.05, 21:38 -
Insert Into - Null Wert JDBC-ODBC
Von BladeNeo im Forum JavaAntworten: 1Letzter Beitrag: 28.04.05, 16:07 -
JDBC: Welche Spalte(n) hat/haben PrimärKey?
Von holtiwilan im Forum JavaAntworten: 1Letzter Beitrag: 28.04.05, 14:56





Zitieren
Login





