Oracle Probleme bei getTableName

Times

Bekanntes Mitglied
Hey,

bevor mir jemand google vorschlägt: Habe ich bereits probiert, aber trotz tausenden von Threads bin ich der Lösung keinen Schritt näher.

Also ich habe das Problem das mit dem ojdbc6 Treiber von Oracle der Tabellenname zur Spalte x nicht ausgegeben werden kann.
Normalerweise (zB mit MySQL) ermittle ich diesen mit dem ResultSetMetaData und .getTableName(int column). Diese Methode wird aber, wenn ich das richtig verstanden habe, von Oracle standardmäßig nicht unterstützt, da das ganze wohl sehr Zeitintensiv ist. Daher wird bei Oracle einfach ein leerer String zurückgegeben.

Nach weiterem umhorchen bin ich auf den Zusatzparameter "ResultSetMetaDataOptions" gestoßen, welcher im ConnectionString mit angegeben werden soll. Nun diese Option direkt mit in den String zu basteln ist mir leider nicht gelungen, aber wenn ich das ganze in eine Propertie-Datei (java.util.Properties) und dieses Objekt dem DriverManager übergebe, bekomme ich zwar keinen Fehler, aber es ist auch keine Veränderung festzustellen. Also die Datenbankverbindung funktioniert weiterhin, keine Beschwerden bzgl. des zusätzlichen Parameters, aber an die Tabellennamen komme ich dennoch nicht.


Java:
public final void connect() throws ClassNotFoundException, SQLException, Exception {
       
        Properties info = new Properties();
        String connString;
        switch (this.type) {
            case MYSQL:
                connString = String.format("jdbc:mysql://%s:%d/%s?user=%s&password=%s&useOldAliasMetadataBehavior=true", this.adress, this.port, this.schema, this.user, this.password);
                break;
            case ORACLE:
                // jdbc:oracle:thin:user/pass@host:port:sid
                // jdbc:oracle:thin:user/pass@host:port/service_name
                connString = String.format("jdbc:oracle:thin:%s/%s@%s:%d/%s", this.user, this.password, this.adress, this.port, this.schema);
                info.put ("ResultSetMetaDataOptions", "1");
                break;
            default:
                throw new Exception(String.format("Unknown database type <%s>", this.type));
        }
        this.conn = DriverManager.getConnection(connString, info);
    }

Jemand ne Lösung für mich? :) Danke <3
 

Times

Bekanntes Mitglied
Ich denke du meintest "Tabellenname" und hast dich nur verschrieben :D ..
Klar ICH weiss den mit Sicherheit wenn ich das SQL-Statement so da reinschreibe, aber das Programm weiss es dann noch nicht. Für diverse Zwecke brauche ich alle Spalten der Tabellen wie folgt ausgeben: TabellenName.SpaltenName (sprich einen Header mit TabellenNamen im Präfix). Wenn ich also folgendes SQL-Statement habe:

select adresse.*, zahlungsbedingung.* from adresse left join zahlungsbedingung on adresse.zahlungsbedingung_sysid = zahlungsbedingung.sysid

und mir dann alle Spalten ausgeben lasse habe ich die ersten 6 schonmal doppelt, weil das eindeutige Datensatzidentifizierungsspalten sind welche es in jeder Tabelle gibt (User Erstellt, Geändert, Timestamp, Interne ID, Status etc.). Wenn ich mir das ganze dann in eine ComboBox packe und alphanumerisch sortiere habe ich jene Spalten doppelt dort stehen, aber ich weiss nicht genau aus welcher Tabelle diese sind

=> Das Beispiel ist vielleicht nicht so ideal, weil das ganze nicht viel Sinn ergibt, aber deswegen ist es ja nur ein Beispiel! Es ist aber notwendig für mich das ich mir irgendwie den TabellenNamen ermitteln kann von Spalte XYZ in meinem ResultSet.
 

Times

Bekanntes Mitglied
Okay lassen wir das.. ja normalerweise verwende ich das ja auch nicht.. deswegen habe ich oben ja auch geschrieben "BEISPIEL".

Außerdem: Wieso ist meine Frage dann sinnfrei? Was hat das eine mit dem anderen zu tun. Ich meine ich könnte auch schreiben "select adresse.id, zahlungsbedingung.id from ... " und trotzdem würde bei getTableName(1) unter Oracle nichts herauskommen.

Aber nungut.. ich suche Hilfe :p
Verwendungen:
Tabelle.Spalte > Wird u.a. dazu verwendet um SQL-Statements jegliche Stammdatenpflege-"Tabellen" & "Formulare" aufzubauen. So kann der Benutzer n Spalten aus m Tabellen auswählen (insofern diese in irgendeiner Weise miteinander verbunden sind) und diese werden ihm dann in der Stammdatenpflege angezeigt.
Auswahl ist zb: adresse.id, adresse.name, zahlungsbedingung.text, adresstyp.text
Daraus wird ein SQL-Statment gebildet, wobei alles hinter dem FROM fest vorgegeben ist (joins, where, order..). Also einfach "select adresse.id, adresse.name .. " etc. Dazu kommt das die Kunden sich eigene Namen dafür geben können (Aliasnamen).

So um diese Auswahl für den Kunden zu erstellen wird ein Grund-SQL-Statment genommen, welches über alle zur Verfügung stehenden Spalten geht und den Filter einfach auf 0 Rows eingrenzt um NUR den Header zu erhalten.
Aus dem Header werden dann alle Spalten ausgelesen, wobei ich zu jener Spalte auch noch immer den Tabellennamen brauche, denn ich muss ja für das select-statement welches später gebildet werden soll, wissen aus welcher tabelle das ganze kommt. Das ganze muss erst dann nicht mehr der Fall sein, wenn jede Spalte jeder Spalte eindeutig ist und das in ein bestehenden Programm so umzuändern ist nicht so einfach möglich.

Dies ist einer der Hauptgründe wofür ich das ganze brauche.. eigentlich recht simpel, wenn die Methode unter Oracle das machen würde was man von der Methode verlangt was sie tut ^^

Sollten weitere Fragen entstanden sein, oder offen sein.. bitte Fragen :)
 

Thallius

Top Contributor
und warum benutzt du dann nicht einfach einen ganz normalen query mit ALL_TAB_COLS oder besser USER_TAB_COLS wie man das eben so macht wenn man Iformationen über Datenbank haben will?
 

stg

Top Contributor
Schau dir mal die Tabelle ALL_TAB_COLUMNS an
select * from ALL_TAB_COLUMNS [WHERE OWNER like 'XXXXXX']
Da solltest du alle benötigten Informationen finden.

Edit: Da war Thallius ja deutlich schneller... die Nachricht wurde mir erste angezeigt, als ich meine abgeschickt habe :O

@ Mod: Mein Post kann gelöscht werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
Kirby.exe Probleme mit docker-compose.yml Datenbankprogrammierung 4
B Probleme mit Datenbankverbindung Datenbankprogrammierung 2
N java SQL JAR - Probleme Datenbankprogrammierung 18
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
D Probleme bei Einsteiger Aufgabe SQL Datenbankprogrammierung 2
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
Z MySQL Probleme mit resultSet executQuery Datenbankprogrammierung 3
H Probleme mit Unicodedarstellung in Derby DB Datenbankprogrammierung 1
M MySQL probleme beim "Generate Tables from Entities" Datenbankprogrammierung 9
L Probleme mit DriverManager.getConnection(..) - Endlosschleife, Java Absturz, Keine Exception Datenbankprogrammierung 4
S Derby/JavaDB Probleme beim anlegen einer embedded DB Datenbankprogrammierung 13
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
W Probleme mit AND und OR Datenbankprogrammierung 5
D DB Tabelle in JTable anzeigen - Probleme Datenbankprogrammierung 8
Gossi CallableStatement Probleme Datenbankprogrammierung 8
D Probleme bei der Erzeugung einer Tabelle Datenbankprogrammierung 15
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
L Derby/JavaDB Derby macht Probleme Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
M Probleme mit Triggering Datenbankprogrammierung 2
F DB2 Probleme mit dem DriverManager Datenbankprogrammierung 4
S Derby/JavaDB OpenJPA, @oneToMany und Probleme Datenbankprogrammierung 2
I MySQL Probleme mit kyrillischen Zeichen Datenbankprogrammierung 2
A Derby/JavaDB Probleme beim Einbinden Datenbankprogrammierung 2
S Probleme mit INSERT Befehl Datenbankprogrammierung 11
R isLast() Probleme bei Pervasive Datenbankprogrammierung 5
S Probleme mit localhost Datenbankprogrammierung 14
M Oracle Probleme mit dem anbinden einer Oracle 10g Datenbank Datenbankprogrammierung 27
J MySQL Hibernate: Probleme beim Speichern von OneToMany - Datensätzen Datenbankprogrammierung 2
P Hibernate -> Probleme bei n:m-Relation und JUnit Datenbankprogrammierung 10
J Probleme mit Datenbankzeiger Datenbankprogrammierung 19
A Probleme mit auf DB2 Express zugreiffen Datenbankprogrammierung 6
N Probleme beim Aufruf aus der DB Datenbankprogrammierung 7
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G Probleme mit Datenbankanbindung Datenbankprogrammierung 3
R Probleme mit Insert Datenbankprogrammierung 2
P Probleme mit Oracle Timestamp Datenbankprogrammierung 3
klattiator Hibernate - Probleme bei Konfiguration Datenbankprogrammierung 3
F Probleme mit entfernter DB und Hibernate Zeichensatz Datenbankprogrammierung 3
G Probleme mit der Schnittstelle H1bernate/Eclipse Datenbankprogrammierung 6
A Probleme mit Jar-File in ein Jar-File Datenbankprogrammierung 8
O Derby Performance Probleme? Datenbankprogrammierung 4
V Probleme beim Öffnen "einiger" SuperbaseTabellen p Datenbankprogrammierung 8
G Probleme beim Methodenaufruf einer EJB Datenbankprogrammierung 10
ARadauer hibernate probleme Datenbankprogrammierung 13
Y Probleme mit H2 und Primary Key Datenbankprogrammierung 4
D Probleme mit mysql-Connection Datenbankprogrammierung 10
G INNODB backup probleme Datenbankprogrammierung 2
S Probleme mit statement.close() Datenbankprogrammierung 10
A Probleme beim Schreiben in eine CSV-Datei aus einer H2-DB Datenbankprogrammierung 2
G Probleme mit Laden des JDBC-Treiber in HSQLDB Datenbankprogrammierung 2
T Probleme mit Date in H2 Datenbank Datenbankprogrammierung 2
4 Probleme mit Select abfrage Datenbankprogrammierung 4
N Probleme mit Access-DB bei einem Webserver Datenbankprogrammierung 5
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
R Probleme mit Datensätzen in MySql DB Datenbankprogrammierung 3
B Oracle Driver Probleme Datenbankprogrammierung 2
I Probleme bei MySQL - Replikation Datenbankprogrammierung 2
R Probleme mit ausführbarem Jar Archiv Datenbankprogrammierung 9
F Probleme mit Jar Datei Datenbankprogrammierung 3
S String probleme Datenbankprogrammierung 3
R Probleme mit der Verbindung zum localhost Datenbankprogrammierung 12
S Probleme bei der Installation von MySQL 5.0 Datenbankprogrammierung 4
A Probleme mit ResultSet und getString(i) Datenbankprogrammierung 13
G Probleme mit Access und Join Datenbankprogrammierung 3
N Probleme mit "nur vorwärts gerichtete ResultSet" Datenbankprogrammierung 7
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
S JDBC-Anfänger und Probleme beim Treiberfinden etc. Datenbankprogrammierung 4
T Probleme beim Verbindungsaufbau zum SQL 2000 Datenbankprogrammierung 2
G Probleme mit Datenbankeinträge Datenbankprogrammierung 4
G Probleme mit Treiber (connector) Datenbankprogrammierung 20
thE_29 getBytes() - russland/bulgarien -- andere Codecs Probleme Datenbankprogrammierung 8
E Probleme mit JDBC und Executable-Jar Datenbankprogrammierung 2
G Probleme mit MySQL - Anmeldung Datenbankprogrammierung 2
P Probleme mit NullPointerException Datenbankprogrammierung 5
K MySQL: Probleme mit dem Verbinden per IP-Adresse Datenbankprogrammierung 6
T Probleme mit Datenbank Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben