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.
Jemand ne Lösung für mich? Danke <3
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