Hey ho,
ich greife über eine grafische Benutzeroberfläche auf verschiedene Excel-Dateien mittels jdbc/odbc zu.
Die Dateiauswahl habe ich mit Swing und dann mit dem JFileChooser gelöst...
(die betreffende Methode übergibt einfach den Dateinamen an den DriverManager um eine Verbindung herzustellen)
Mein Problem ist, dass wenn ich nach Auswahl der Datei jeweils via SQL auf die Tabellen zugreifen möchte, ich ja auch den Tabellennamen kennen muss !
Jetzt habe ich aber verschiedene Sheets auf die immer nur einfach ein
"SELECT * FROM [(sheetname)$]"
ausgeführt werden soll.Gibt es irgendwie ne Möglichkeit sich die Namen der Sheets in einer ausgewählten Datei zu holen, bzw. auch deren Anzahl?
(Ich habe also verschiedene Tabellen, deren Namen ich nicht unbedingt kenne, auf die ich auch aber immer den selben Befehl ausführen möchte!)
Hier einmal die komplette Methode...
public void calc()
{
Connection con = null;
Statement st = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dateiname = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" + _sourcePath +";" + "DriverID=22;READONLY=false";
//mit "_sourcePath" als übergebenem String aus dem FileChooser
con = DriverManager.getConnection(url, "", "");
st= con.createStatement();
String query = "SELECT * from [tabelle1$]";
ResultSet rs = st.executeQuery(query);
while (rs.next())
{
//do anything
}
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
//blabla, hier geht weiter, ausserdem alles Beta!
}
Falls es da irgendwie eine Möglichkeit gibt, würde ich dann gerne die (ausgelesenen) Tabellennamen in der Oberfläche darstellen, damit der Benutzer auswählen kann, auf welche Tabelle entsprechende Funktion ausgeführt werden soll.
Wäre sehr nett, wen jemand ne Lösung hätte, konnte bisher aber leider nichts dem entsprechendes finden.
mfg
tremor4fun