Methode getColumnIndex(String columnName) ?

Status
Nicht offen für weitere Antworten.
T

TheSunToucher

Gast
Hi,

ich bin verzweifelt auf der Suche nach ein paar Methoden in ResultSetMetaData. Es gibt z.B. die Methode "getColumnName(int columnIndex)" nicht aber die Methode "getColumnIndex(String columnName)". Außerdem gibt's die Methode "getTableName(int columnIndex)" aber die Methode "getTableName(String columnName)" fehlt.

Ich kenne an einer bestimmten Stelle in meinem Programm nur den Name der Column und muss den TableName rausfinden. Da die oben aufgeführten Methoden fehlen müßte ich über die Columns iterieren und mir die Namen und Indexe merken, das ist allerdings äußerst schlecht für die Performance.

API: java.sun.com/j2se/1.3/docs/api/java/sql/ResultSetMetaData.html

Hab ich was übersehen? Danke, gruß
TheSunToucher
 

Bleiglanz

Gesperrter Benutzer
ist doch unsinnig sowas zu erwarten

ein Resultset muss sich ja nicht unbedingt auf eine Tabelle beziehen (Joins oder SELECT 2+2...)

sowas machst du über DataBaseMetaData, da gibts getTables, getColumns schau mal in die API

heisst das eigentlich, dass alle Spaltennamen (!) über alle Tabellen bei dir eindeutig sind?
 
T

TheSunToucher

Gast
Bleiglanz hat gesagt.:
ist doch unsinnig sowas zu erwarten
ein Resultset muss sich ja nicht unbedingt auf eine Tabelle beziehen (Joins oder SELECT 2+2...)

keineswegs, vieleicht hab ich mich auch unverständlich ausgedrückt. Wieso ist denn deiner Meinung nach die Methode "getColumnName(int columnIndex)" sinnvoll, die es ja gibt, die Methode "getColumnIndex(String columnName)" die ich vermisse und die eigentlich das gleiche genau anderesrum machen soll unsinnig?

Bleiglanz hat gesagt.:
sowas machst du über DataBaseMetaData, da gibts getTables, getColumns schau mal in die API

heisst das eigentlich, dass alle Spaltennamen (!) über alle Tabellen bei dir eindeutig sind?

Gerade wenn meine Spaltennamen nicht eindeutig sind (und das sind sie natürlich nicht) muss ich über die ResultSetMetaData gehen. Wie soll ich denn nur anhand des Spaltennamen die richtige Spalte über die DatabaseMetaData finden? Das ResultSet bzw. dessen Metadaten müssen mir doch auch bei Joins sagen können aus welcher Tabelle eine bestimme Spalte kommt. Wie im ersten Posting gesagt, die Methode "getTableName(int columnIndex)" gibt es ja in der JDBC Spezifikation, ist die deiner Meinung nach sinnlos?

Wenn es sich nciht um eine Tabelle sondern einen View handelt, dann möchte ich gern den Namen des Views zurückbekommen.

Zum Hintergrund:
Nur damit ihr/du verstehst wo mein Problem liegt. Ich habe einen Layer zwischen der Applikation und dem JDBC erstellt, dies hat andere Gründe die den Rahmen sprengen würden. Ich habe eine Klasse, nennen wir sie einfach mal "MyResultSet". Diese erfüllt das "java.sql.ResultSet"-Interface und kapselt das eigentliche ResultSet des JDBC-Treibers. Ich habe wie gesagt alle Methoden des Interfaces implementiert, wobei die meisten die Anfrage einfach an das orginal ResultSet durchreichen.

Ich möchten in den beiden Methoden "getString(String)" und "getString(int)" nun eine gewisse Methode aufrufen vorrausgesetzt das des Spalte X aus Tabelle Y ist. Deshalb brauche ich die Methoden die ich im ersten Posting beschrieben habe.

Schmatisch sieht das so aus:
Code:
public class MyResultSet implements ResultSet {

  private ResultSet rs;
  
  public MyResultSet(Resultset rs) {
    this.rs = rs;
  }

  public String getString(String column){
    return rs.getString(column);
  }

  // weitere Methoden des Interfaces

}

Ich hoffe das hat dich/euch das Problem ein wenig klarer gemacht, es wundert mich wirklich das die Methoden nicht drin sind und ich glaube du wirst mir zustimmen das die doch sinnvoll sind.

Danke das du diesen vielzulangen Post gelesen hast ;-]
Danke für jede Hilfe, gruß
Tim
 

Bleiglanz

Gesperrter Benutzer
sorry, hab das wohl nicht ganz verstanden

zum ersten Problem: warum die Methode fehlt sei dahin gestellt

du kannst ja mit
Code:
//getColumnCount()
//getColumnName(int column)
for(int i=1;i<=rs.getColumnCount();i++){
    mymap.put(rs.getColumnName(i),Integer.valueOf(i));
}

// dann getTable(mymap.get(colname).intValue) versuchen

ganz einfach eine Map erzeugen, die dir auch die "umgekehrte Zuordnung ermöglicht", allerdings gibt es datenbanken, die

Code:
SELECT 1 AS 'foo', 2 AS 'foo' -- ggf. noch ein FROM DUAL

verstehen....also Vorsicht
 
T

TheSunToucher

Gast
Jo, die Möglichkeit hatte ich natürlich in betracht gezogen, deshalb hab ich im ersten Posting auch folgendes geschrieben:
Da die oben aufgeführten Methoden fehlen müßte ich über die Columns iterieren und mir die Namen und Indexe merken

Trotzdem verstehe ich nciht warum die Methoden fehlen, denn ich würde tippen, das die meisten Implementationen von JDBC sowieso eine map mit diesen Informationen halten...

Wo wäre eine gute 'offizelle' Stelle einen Feature-Requst zu stellen? Auf java.net in einem bestimmten Forum?!?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
S Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden Datenbankprogrammierung 3
D sql query in methode mit rückgabetyp Datenbankprogrammierung 14
D JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht Datenbankprogrammierung 3
C Seitensystem mit seek Methode Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 0
J Datenbank: Methode wegen doppelten User Datenbankprogrammierung 1
N tableChanged Methode - AbstractTableModel Datenbankprogrammierung 2
W Methode createStatement() Datenbankprogrammierung 14
S Hibernate und Set-Methode Datenbankprogrammierung 16
S Schnellste Methode Datei aus Datenbank herstellen Datenbankprogrammierung 7
A update methode für datenbank Datenbankprogrammierung 2
A Insert Methode Syntaxfehler Datenbankprogrammierung 2
J Methode Datenbankprogrammierung 5
R Effiziente Java-Methode zum finden eines freien PK Datenbankprogrammierung 7
K Schnelle Methode um zu testen ob Datensatz existiert Datenbankprogrammierung 9
G Effektive Methode zum durchsuchen von SQL-Datenbanken Datenbankprogrammierung 7
A Problem mit der Methode setFieldDelimiter("'"); Datenbankprogrammierung 3
L Methode, die Veränderungen in Datenbank zeigt? Datenbankprogrammierung 4
A Blob in Oracle-DB einfügen (veraltete Methode) Datenbankprogrammierung 3
B Methode .next() - das Rätsel für Experten! URGENT Datenbankprogrammierung 2
G SQL-Query Methode Datenbankprogrammierung 4
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
M Oracle String aus Column splitten und x Rows daraus erstellen Datenbankprogrammierung 1
C String in Datenbank einfügen Datenbankprogrammierung 11
E Conversion failed when converting date and/or time from character string. Datenbankprogrammierung 3
D String übergeben Datenbankprogrammierung 7
X MySQL Json String in MySQL einfügen. Datenbankprogrammierung 20
M SQLite Suche nach String Datenbankprogrammierung 4
C Objekte aus DB in Strings umwandeln also von List<Objekt> in String Datenbankprogrammierung 6
A ByteArray zu String dann wieder zu ByteArray Datenbankprogrammierung 2
D HSQLDB SQL ORDER BY nur mit fixen String machbar? Datenbankprogrammierung 16
F Dynamischen String in SQL Statement einbinden Datenbankprogrammierung 9
N String Array in While Schleife befüllen Datenbankprogrammierung 2
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
R Zeichenkette in String zählen Datenbankprogrammierung 3
P GWT Applikation-The method forName(String) is undefined for the type Class Datenbankprogrammierung 10
B Mysql speichert keine 0 alls String Datenbankprogrammierung 11
B MySQL Datenbank Connection als String zurückgeben Datenbankprogrammierung 7
F Oracle ResultSet zu einer HashMap<Integer, String[]> Datenbankprogrammierung 6
I DB-Zelleninhalt mit String vergleichen klappt nicht Datenbankprogrammierung 3
I SQL_Abfrage-Ergebnis (ResultSet) in String[] speichern Datenbankprogrammierung 29
M SQL String Datenbankprogrammierung 2
G Sonderzeichen im String codieren Datenbankprogrammierung 4
K Date in SQL-String konvertieren Datenbankprogrammierung 3
B String aus txtDatei auslesen und in Datenbank schreiben. Datenbankprogrammierung 8
T Mittels SQL-String ein Berechnung vornehmen Datenbankprogrammierung 2
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
C Split String für SQl query Datenbankprogrammierung 10
J String[] in eine SQL-Anweisung implementieren Datenbankprogrammierung 13
F ResultSet to String[] Datenbankprogrammierung 3
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
G Hilfe um String an Datenbank zu schicken Datenbankprogrammierung 3
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
G Daten aus ResultSet in String-Liste Datenbankprogrammierung 13
padde479 Connection String Oracle Datenbankprogrammierung 5
T SQL Date String in java.util.Date umwandeln Datenbankprogrammierung 3
G ResultSet: String mit Anführungszeichen einlesen Datenbankprogrammierung 8
A JPA + @OneToMany + String ArrayList Datenbankprogrammierung 4
S Char to String aus DB Datenbankprogrammierung 2
Q string Vergleich Datenbankprogrammierung 2
M Konvertierung eines Ojects to String Datenbankprogrammierung 3
M Preparedstatement SQL-string auslesen Datenbankprogrammierung 13
D INSERT String enthält ' wie kann man das Escapen? Datenbankprogrammierung 4
G MsSQL | Statement.execute(String s) Datenbankprogrammierung 3
G CLOB to String - Encoding Problem Datenbankprogrammierung 6
D String[][] Array in Access Datenbank speichern Datenbankprogrammierung 5
K Hibernate: Liste von String-Werten Datenbankprogrammierung 2
S String probleme Datenbankprogrammierung 3
R Nach String in MySQL datenbank suchen Datenbankprogrammierung 7
M Datum's String in MSSQL oder MySQL wie konvertieren ? Datenbankprogrammierung 3
T String in DB(Oracle) schreiben mit Leerzeichen Datenbankprogrammierung 4
K ResultSet: Erste Zeile ausgeben, Datensatz in String speiche Datenbankprogrammierung 13
E Fehler bei String-Insert in MySQL-DB Datenbankprogrammierung 8
L Datum (String) in MySQL-Tabelle (date) speichern Datenbankprogrammierung 4
C SQLException wenn String auf VARCHAR geschrieben wird Datenbankprogrammierung 10
K string literal too long was tun ? Datenbankprogrammierung 9

Ähnliche Java Themen


Oben