# Daten - DB-Abfrage - Tabelle



## Tejo1986 (1. Dez 2010)

Hey,

und zwar möchte ich meien Daten über ein Formular und nem Kalender eingeben. Das habe ich soweit.

Über Java Code in meiner JSP Datei holt er sich Kennzahlen von ner Datenbank, wo ich dann genau 1 Auswähle. Anschließend gebe ich über nen Kalender (javascript) noch Beginn und Enddatum.


```
Connection connection = null;
    String kennzahlliste = "";
    String beschreibung = "";
    String kennzahl = "";
    try {
        // Treiber laden
        Class.forName("oracle.jdbc.driver.OracleDriver");
        // Verbindung herstellen
        String server = "myDB" ;
        String port = "1521";
        String sid = "test;
        String url = "jdbc:oracle:thin:@" + server + ":" + port + ":" + sid;
        String user = "root;
        String pass = "123456";
        connection = DriverManager.getConnection(url, user, pass);

        // Autocommit deaktivieren
        connection.setAutoCommit(false);

        // Kennzahlen auslesen
        Statement stmt = connection.createStatement();
        ResultSet rset = stmt.executeQuery("SELECT ....FROM....WHERE....);
        kennzahlliste = "<option></option>";
        beschreibung = "<script type=\"text/javascript\"> beschreibung = [\"\"";
        kennzahl = "<script type=\"text/javascript\"> kpi = [\"\"";
        int i = 0;
        while (rset.next()) {
            kennzahlliste += "<option>" + rset.getString(1) + "</option>";
                beschreibung += ",";
                beschreibung += "\"" + String.valueOf(rset.getString(3)) + "\"";
                kpi += ",";
                kpi += "\"" + String.valueOf(rset.getString(2)) + "\"";
            i++;
        }
        beschreibung += "] </script>";
        Kennzahl += "] </script>";
        out.println(beschreibung);
        out.println(kennzahl);
    } catch(SQLException e) {
        out.println(e.getMessage());
    } catch(ClassNotFoundException e) {
        out.println(e.getMessage());
    }
%>
```

Das klappt soweit.Die kennzahl steht ja entsprecehnd dann auch in der variable kennzahl drin.

Die Kalenderdaten werden über nan Kalender in JavScript definiert.
Nur wie bekomme ich die Kalenderdaten aus dem Javascript raus ? Sollte ich ja sicher in Variablen Speichern ?

Mit diesen Daten möchte ich dannach gern erstmal eine Abfrage an eine Datenbank stellen. Sprich Select x,y,z FROM xxx WHERE Kennzahl = kennzahl, Beginndatum=beginn AND Endatum=end.


Macht man das wieder über Java Code ? So wie vorher auch schon, wo ich mir die Kennzahl aus ner anderen Datenbank geholt habe ? Oder gleich ne extra Klasse, an die ich dann meine 3 parameter übergebe ?

Das nächste wäre dann, aus den Daten die er bekommt eine Tabelle zu erzeugen. Zu ejder Kennzahl bekommt man mehre Daten, die in mehren Zeilen dargestellt werden sollen.

Über ne JTAble oder ne Schleife die Zeile für Zeile erstellt ?

Hoffe ihr könnt zumindest Teilweise helfen, bin über jedes Stück Code dankbar um weiter zu basteln.


----------



## SlaterB (1. Dez 2010)

eine JTable ist ein Element einer Swing-GUI, wie du das hier bei HTML/JSP erwähnst gibt zu denken..

aus JavaScript oder sonstigen Aktionen im Client-Browser beim User sollte normalerweise die einzige komplexe Aktion ein neuer Request an den Server sein, das Laden einer neuen Seite, ob mit Formular-Daten, Request-Parametern oder nur einer simplen URL,
was dann passiert hängt vom Framework ab,
ganz klassisch:
1) ein Servlet oder irgendeine ähnliche reine Java-Klasse lädt Daten aus der DB und ähnlich schwieriges,
2) die zusammengestellten Daten werden an eine Anzeige-Klasse wie eine JSP geschickt, dort schick präsentiert, 
diese Elemente haben meist wenig bis gar kein Java sondern HTML-Code, spezielle Tags usw.
40 Zeilen <% Java-Code %> sind vielleicht möglich, aber nicht gerade so gedacht


----------



## Tejo1986 (1. Dez 2010)

Ok, das mit dem Servlet klingt logisch. 
An dieses Servlet gebe ich dann aus meiner jsp die Daten, erstelle mit diesen Daten ne SQl Abfrage und nehme das Ergebniss entgegen. So ungefähr dann die Übergabe der Daten oder ?

servlet.getData(kennzahl,beginn,ende) 


In welcher Form übergebe ich dann das Ergebniss um es dann wieder darzustellen ? 
Im Servlet selber macht die Methode getData dann die Abfrage mit den Werten.Und wie kommen die wieder zur JSP zurück ? 
nen einfaches return ? Bei z.T. doch ejniegen Daten.
Oder läuft das dann in ner Schleife ab, wo er zeile für zeile alle Daten zu einem Datensatz sich sich vom Servlet holt ?


----------



## SlaterB (1. Dez 2010)

es gibt keine Methode zum Abfragen und kein return, das eine ist eine Webseite dargestellt im Browser eines Benutzers, das andere ein 100km entfernt stehender Server-Rechner,
diese kommunizieren mit HTTP, mit Web-Anfragen, Links, Formularen usw., 

hier ist das Internet, keine einfache Java-Anwendung..,

ich möchte gar nicht viel mehr erzählen, bevor eine Webanwendung läuft sollte man eigentlich erstmal 200 Seiten Buch lesen,
oder eben Schritt für Schritt an Tutorials halten, JavaScript kann da aber noch nicht gleich ein Thema sein..


----------



## Tejo1986 (1. Dez 2010)

Hey,

das is wohl besser. Hast du nen Link zu nem guten Tutorial ?
Werde das ganze Stück für Stück machen, aufbauend auf den bestehende Elementen.
Im Moment klappt es auch mit den 40 zeile java Code ne Liste zu erzeugen, dort was auszuwählen. Das Datum geht auch.

Darauf aufsetzend werde ich erstmal mich dran setzen ne Anfrage an die DB hinzubekommen.

Die genau Bezeichnung des Paramater im javaScript is gekennzeichnet als id="xxx" oder ?
Entsprechend hole ich das Datum was dort eingetragen ist mit String start= request.getParameter("xxx") ?!
Wie ich damit dann weitermache wird sich im Turoial zeigen


----------



## SlaterB (1. Dez 2010)

ein bestimmtes Tutorial kann ich nicht nennen, google liefert diverse

aus meiner Sicht sind JSPs ja gar kein Thema an sich sondern nur ein Teil der Anwendung für die Darstellung, 
wichtiger wäre ein Framework darüber, Struts, JSF oder anderes,
aber dadurch wirds noch komplizierter, so dass ich dir das guten Gewissens auch nicht zumuten kann


----------

