Zum Inhalt springen

Methodenaufruf!!! Aber was ist falsch?


sacklzement

Empfohlene Beiträge

Hallo zusammen!

ich habe eine JSP seite, importiere mir eine Java-Klasse und möchte dann eine Methode abfahren. Es funktioniert aber nicht.

Was ist falsch?

JSP-Seite:

<HTML>

<head>

<title>Status</title>

</head>

<body>

<%@ page import="Status.*;" %>

<%! String[] werte = new String[4]; %>

<% werte = new Status.werte().holeData() %>

*** Ausgabe ***

</body>

</HTML>

In der Java-Klasse wird ein SQL-Statement ausgeführt was mir aus einer DB Daten zurückgibt. Diese werden dann ja der Variablen werte in der JSP seite gegeben. Zurückgegeben wird ein Array.

Tomcat-Verzeichnis:

Die Klasse liegt unter Root/classes/Status

Fehlermeldung:

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 8 in the jsp file: /status.jsp

Generated servlet error:

The method daten() is undefined for the type werte

Bitte um Hilfe!! Ich bin JSP-neuling

Vielen Dank im Voraus.

Gruß

Sacklzement

Link zu diesem Kommentar
Auf anderen Seiten teilen

new Status.werte().holeData()
Angenommen, Du willst eine neue Instanz der Klasse Status erzeugen, dann mal besser:
Status s = new Status();
Du willst auf diese neue Instanz die Methode werte() aufrufen?
s.werte();
Da Du keinerlei Infos gibst, wie die Klasse Status aussieht, kann man nur raten. Es könnte jedoch sein, dass in der Klasse Status die static Methode
public static Object werte() { ...}
definiert wurde. Dann lautet der Aufruf:
Status.werte();

Link zu diesem Kommentar
Auf anderen Seiten teilen

import java.sql.*;

public class werte

{

String Query;

ResultSet rs;

String[] werte = new String[4];

public String[] holeData()

{

Query = "SELECT * FROM POR_Buchungsdatum";

rs = new Portal.cls_connect().select(Query);

try

{

int i = -1;

while(rs.next())

{

i = i + 1;

werte = rs.getString(2);

}

}

catch(SQLException e)

{

System.err.println("Error");

e.printStackTrace();

}

return werte;

}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ok also du hast ne Klasse "Werte" in dieser die Funktion holeData()

Dann sollte der Aufruf so ausschauen:

Werte w = Werte();

w.holeData()

Frage zur Klasse Werte.

Du hast dir dort ein StringArray mit der länge 4 definiert.

Bist du dir sicher das in deiner Tabelle immer nur 4 Datensätze drin sind?

Ich würd dafür eine List verwenden.

List werte = new ArrayList();

Mit java 1.5, falls ihr das verwendet, geht das auch Typsicher.

Dein logging im Fehlerfall würd ich auch nochmal überdenken.

Habt ihr nicht vielleicht schon eine Bibliothek die ihr für´s logging verwendet wird? z.B log4j

Ausserdem solltest du überdenken ob du die Methode nicht lieber mit einer Exception abbrechen lässt in so einem Fall (RuntimeException werfen oder NotFoundException wenn´s nicht so schlimm ist... je nachdem halt).

Ich denk da kannst du noch bisschen was optimieren.

- brauchst du die definierten Variablen als Instanzvariablen

- evtl. solltest du auf dem Resultset in nem finally close() aufrufen

... kannst ja mal drüber nachdenken.

Gruß Moha

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

hat funktioniert. Aber ich bekomme gleich das nächste Problem.

Er kann keine Verbindung zur DB herstellen. Laut Logfile des Tomcat´s bekomme ich eine NullPointerException mit der begründung das er den Datenquellennamen nicht findet, da kein Standardtreiber angegeben ist.

Wenn ich die Klasse im Eclipse laufen lasse bekommen ich die daten so wie es sein soll. Die Datenbank ist in der ODBC-Verbindung in der Verwaltung eingetragen.

Code:

Statement command;

Connection conn;

puplic void connect()

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn = DriverManager.getConnection("jdbc:odbc:TDC");

System.out.println("Connected to DB");

command = conn.createStatement();

}

catch(SQLException se)

{

System.out.println(se);

se.printStackTrace();

}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Laut Logfile des Tomcat´s bekomme ich eine NullPointerException mit der begründung das er den Datenquellennamen nicht findet, da kein Standardtreiber angegeben ist.

das heisst dann also "data source not found and no default driver specified".

ist das sicher eine NullPointerException und keine SQLException?

welche version von MDAC ist auf dem system installiert?

überprüfe auch, ob der Jet-ODBC-treiber korrekt installiert wurde.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

MDAC??? Jet-ODBC??? Bin leider in der Javawelt ein noob und weiß auch jetzt auch nicht wo ich das alles finde!

Laut logfile ist es eine NullPointerException, was auch wieder logisch ist da er den Treiber für die DB nicht finden kann!

Wäre super wenn du mir sagen kannst wo ich nachsehen soll.

Gruß

Sacklzement

Link zu diesem Kommentar
Auf anderen Seiten teilen

mein angesprochenes MDAC hat mit Java erstmal garnix zu tun; wenn du aber auf eine MS-Access datenbank zugreifst, benötigst du einen entsprechenden treiber, welcher allerdings üblicherweise mit windows schon mitgeliefert wird.

die angesprochene fehlermeldung, dass der treiber nicht gefunden werden kann, legt nahe, dass unter gewissen umständen nicht darauf zugegriffen werden kann.

konkret sind das MSJET35.DLL (Jet 3.5) bzw. MSJET40.DLL (Jet 4.0), ODBCJT32.DLL (Jet ODBC treiber) diese (und u.u. noch andere für den treiber wichtigen dateien) sollten im SystemRoot\System32 vorhanden sein.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...