tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von SE
  • 1 Beitrag von SE
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
391
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    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
    Andy
    Geändert von Andyx1975 (27.10.11 um 16:24 Uhr)
     

  2. #2
    SE 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.
    Andyx1975 bedankt sich. 

  3. #3
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    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 );
            }
     

  4. #4
    SE 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 :
    Code sql:
    1
    
    INSERT INTO `ident` ('vorname', 'name', 'sortname', 'bem') VALUES ('vorname', 'name', 'sortname', 'bem');
    Zumindest würde so ein INSERT-Query bei MySQL aussehen.
    Andyx1975 bedankt sich. 

  5. #5
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    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.
     

  6. #6
    SE 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*.
     

  7. #7
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    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
     

  8. #8
    SE 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

  1. [DB2/JDBC] - Nur einmal INSERT möglich ?
    Von AvS im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 20.11.08, 20:55
  2. Antworten: 2
    Letzter Beitrag: 04.05.08, 12:54
  3. JDBC- mehrere INSERT auf einmal
    Von JoeBloggs im Forum Java
    Antworten: 2
    Letzter Beitrag: 20.10.05, 21:38
  4. Insert Into - Null Wert JDBC-ODBC
    Von BladeNeo im Forum Java
    Antworten: 1
    Letzter Beitrag: 28.04.05, 16:07
  5. JDBC: Welche Spalte(n) hat/haben PrimärKey?
    Von holtiwilan im Forum Java
    Antworten: 1
    Letzter Beitrag: 28.04.05, 14:56