Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Zugriff auf eine Postgresql-DB mit Java

  1. #1
    IngeMaus ist offline Neuer Benutzer
    Registriert seit
    29.03.2010
    Beiträge
    7

    Standard Zugriff auf eine Postgresql-DB mit Java

    ich arbeite mit Eclipse (Java 1.6) mit Postgresql.8.4.4 Linux (Betriebssystem Opensuse 11.2). Installiert habe ich Postgresql (Install and Configure PostgreSQL in openSUSE 11.0 | SUSE & openSUSE) und anschließend user und Datenbank mit pgAdmin3 angelegt. Jetzt will ich mit Java auf diese DB zugreifen (Insert, Update, Delete). Habe dafür postgresql.8.4.701.jdbc4.jar in Eclipse als Library eingebunden. Beim Starten der Oberfläche gibt er mir aus: Verbindung aufgebaut und nach dem SQL-Befehl org.postgresql.util.PSQLException: FEHLER: Relation Tabelle existiert nicht.
    Auf einigen Webseiten wird angegeben, den Postmaster zu starten. Aber auch damit geht es nicht. Der SQL-Befehl wird in pgAdmin ohne Probleme ausgeführt. Ich habe die jar nach /usr/share/java kopiert. Aber auch das brachte nichts. Wer kann mir helfen?

  2. #2
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    493

    Standard

    Zitat Zitat von IngeMaus Beitrag anzeigen
    Verbindung aufgebaut und nach dem SQL-Befehl org.postgresql.util.PSQLException: FEHLER: Relation Tabelle existiert nicht. Wer kann mir helfen?
    Die Tabelle(n) die in Deinem SQL verwendet werden, gibt es nicht auf dem Server.

    Hast Du die vorher auch angelegt?

    Wie sieht das CREATE TABLE der Tabelle aus?
    Wie sieht Dein SELECT (oder UPDATE, ...) aus?
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  3. #3
    IngeMaus ist offline Neuer Benutzer
    Registriert seit
    29.03.2010
    Beiträge
    7

    Standard

    Ich habe die Tabelle mit Create table tabellenname (Attribute); Commit; einschließlich der Constraints über sql-Script von pgAdmin3 angelegt. Besitzer der Tabellen ist der von Java angesprochene User. Die SQL-Befehle in Java-Script funktionieren wenn ich sie bei pgAdmin direkt starte, es wird eingefügt, geändert oder entsprechende Daten ausgelesen.

  4. #4
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Kannst du die exakten Befehle hier kopieren? Setze diese bitte in [ code ] und [ / code ] Tags (jeweils ohne Leerzeichen).
    Bitte auch auf Groß-/Kleinschreibung achten.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  5. #5
    IngeMaus ist offline Neuer Benutzer
    Registriert seit
    29.03.2010
    Beiträge
    7

    Standard

    Angelegt habe ich die Tabellen mit: CREATE TABLE auto (autokennzeichen character varying (20) NOT NULL, marke character varying (20), CONSTRAINT auto_pkey PRIMARY KEY (autokennzeichen)WITH(OIDS=FALSE); ALTER TABLE auto OWNER TO "Ingrid"; und
    CREATE TABLE tanken (ID integer NOT NULL, autokennzeichen character varying (20),
    CONSTRAINT tanken_pkey PRIMARY KEY (id), foreign key (autokennzeichen) references auto)WITH (OIDS=FALSE); ALTER TABLE tanken OWNER TO "Ingrid";
    und in Java habe ich versucht die Datensätze mit "SELECT * FROM auto;" oder "INSERT INTO auto VALUES ('" + kennzeichen + "', '" + marke + "'); \n Commit;" abzufragen bzw. neue Datensätze anzulegen. Wenn ich diese Datensätze direkt bei pgAdmin3 starte, wird eingefügt bzw. abgefragt. Daher vermute ich, dass ich von Java keine Verbindung zu den Tabellen aufgebaut habe.

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Es gibt bestimmt Methoden für Transaktionen. Du solltest vermeiden das COMMIT direkt an das INSERT anzuhängen. Andernfalls bekommst du den Rückgabewert vom COMMIT und nicht den vom INSERT. Und der ist eigentlich immer "OK".

    Ach ja, wie war das mit [ code ] Tags? Das erhöht ungemein die Lesbarkeit deines Postings.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  7. #7
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    493

    Standard

    Zitat Zitat von IngeMaus Beitrag anzeigen
    und in Java habe ich versucht die Datensätze mit "SELECT * FROM auto;" oder "INSERT INTO auto VALUES ('" + kennzeichen + "', '" + marke + "'); \n Commit;" abzufragen bzw. neue Datensätze anzulegen
    Hast Du wirklich das commit und das SELECT in einem Java String?
    Das geht nicht.

    Statement.execute() (und seine Derivate) könnten nur genau ein Statement ausführen.
    Normalerweise kriegst Du eine Exception wenn Du in dem SQL String ein Semikolon drin hast...

    Du musst also sowas wie
    Code:
    try
    {
       stmt.executeUpdate("INSERT INTO auto VALUES ('" + kennzeichen + "', '" + marke + "');
       con.commit();
    }
    catch (SQLException sql)
    {
       sql.printStackTrace();
       con.rollback();
    }
    machen
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  8. #8
    IngeMaus ist offline Neuer Benutzer
    Registriert seit
    29.03.2010
    Beiträge
    7

    Standard

    Danke für die Hilfe. Ich habe die Befehle im Java-Programm entsprechend geändert (kein Commit und Semikolon). Trotzdem bekomme ich weiterhin die Fehlermeldung: SQLException: org.postgresql.util.PSQLException: FEHLER: Relation »auto« existiert nicht.
    Ich habe bei den Befehlen auto in public.auto geändert, bekomme aber auch eine Fehlermeldung (FEHLER: Relation »public.auto« existiert nicht).
    Ich habe die Verbindung zu Postgres nach der Internetseite (http://www.pg-forum.de/h-ufig-gestel...c-eclipse.html) programmiert.
    Dort bekomme ich keine Fehlermeldungen und die Verbindung wird als org.postgresql.jdbc4.Jdbc4Connection@587c94 ausgegeben.
    Ich weiß nicht mehr weiter.

  9. #9
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von IngeMaus Beitrag anzeigen
    Danke für die Hilfe. Ich habe die Befehle im Java-Programm entsprechend geändert (kein Commit und Semikolon). Trotzdem bekomme ich weiterhin die Fehlermeldung: SQLException: org.postgresql.util.PSQLException: FEHLER: Relation »auto« existiert nicht.

    Ich weiß nicht mehr weiter.
    Ich kann hier nur vermuten. Und ich vermute, Du hast da vielleicht Probleme mit groß/KLEIN - ScHrEiBuNg. Was ist denn, wenn Du mit psql Dich auf der DB einloggst und schaust, ob es die Tabelle da gibt?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  10. #10
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    493

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Ich kann hier nur vermuten. Und ich vermute, Du hast da vielleicht Probleme mit groß/KLEIN - ScHrEiBuNg.
    Das dachte ich auch zuerst. Aber wenn das gepostete CREATE TABLE stimmt, kann's eigentlich nicht sein (weil keine Quotes verwendet)

    Ich tippe eher auf eine falsche Verbindung (z.B. falsche DB ausgewählt in der JDBC URL)
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum