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?
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
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.
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
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.
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
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 wiemachenCode:try { stmt.executeUpdate("INSERT INTO auto VALUES ('" + kennzeichen + "', '" + marke + "'); con.commit(); } catch (SQLException sql) { sql.printStackTrace(); con.rollback(); }
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
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.
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen