Beitrag 69 von 610 (11%) | Antworten Beitrag schreiben | Anfang zurück weiter Ende |
|
Hi erstmal!
Ich habe ein Problem beim Datenbankzugriff mit einem Servlet und wollte fragen ob ihr mir hier vielleicht weiterhelfen könntet....
Also grundsätzlich möchte ich mit einem Servlet auf eine MySQL Datenbank zugreifen und von dieser Werte abfragen...
Mein Problem ist, dass das Servlet die Treiberklasse nicht findet, dh. mir eine ClassNotFoundException wirft....
hier einmal der code//Das ist das Servlet
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class StoreProc extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//Initialisierung der Variablen
boolean html = false;
boolean text = false;
boolean xls = false;
boolean self = false;
ResultSet rs = null;
//Ermitteln der uebergebenen Parameter
int start = Integer.parseInt(req.getParameterValues("Start")[0]);
int stop = Integer.parseInt(req.getParameterValues("Ende")[0]);
html = (req.getParameterValues("htmlformat") != null);
text = (req.getParameterValues("textformat") != null);
xls = (req.getParameterValues("xlsformat") != null);
self = (req.getParameterValues("selfformat") != null);
try {
rs = DataBase.RequestData(start, stop); //<-- Aufruf der Problemfunktion
}
catch (SQLException es) {
System.out.println(es.toString());
}
PrintWriter out = res.getWriter();
try {
if (xls)
printxls(res, out, rs);
else if (text)
printtxt(res, out, rs);
else if (html)
printhtml(res, out, rs);
}
catch (SQLException e1) {
System.out.println(e1.toString());
}
}
}
Dann die Klasse für den Datenbankzugriffimport java.sql.*;
import java.util.Date;
public class DataBase {
private static Connection c;
public static ResultSet RequestData(long von, long bis)
throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance(); //!!!!!!!!
}
catch (Exception e) {
System.out.println(e.toString());
}
try {
c = DriverManager.getConnection("jdbc:mysql:///ftku", "root", "secret");
}
catch (SQLException e1) {
System.out.println(e1.toString());
}
StringBuffer sb = new StringBuffer("SELECT * FROM Messwerte WHERE ");
Date d_von = new Date(System.currentTimeMillis() - von * 60000);
Date d_bis = new Date(System.currentTimeMillis() - bis * 60000);
sb.append("ZEIT < " + d_bis.getTime() + " AND ZEIT > " + d_von.getTime() + ";");
Statement s = c.createStatement();
return s.executeQuery(sb.toString());
}
}
Mein Problem besteht jetzt darin, dass wenn ich die Funktion RequestData aus dem Servlet aufrufe wirft mir das Programm die Exception "java.lang.ClassNotFoundException: com.mysql.jdbc.Driver" (Er findet den mysqldriver nicht)
Was mich jedoch stutzig macht ist, dass wenn ich die selbe Funktion aus der folgenden Klasse heraus aufrufe läuft sie einwandfrei//Testklasse
import java.sql.*;
public class Host {
public static void main(String args[]){
ResultSet rs = null;
try {
rs = DataBase.RequestData(10, 0);
}
catch (SQLException e1) {
System.out.println(" " + e1.toString());
}
try {
while(rs.next()) {
System.out.print(rs.getString(1) + "\t");
System.out.println(rs.getString(2));
}
}
catch (SQLException e) {
System.out.println(" " + e.toString());
}
System.out.println("Succeful");
}
}
Mein einziger Verdacht wäre, dass ich bei meinem Webserver (Tomcat) eine Konfiguration vergessen (falsch gemacht) hätte....
ps: Ich habe Eclipse 3 + Sysdeo Tomcat Plug-in V221 benutzt. Als Datenbanktreiber mysql-connector-java-3.0.9 und als Datenbank mysql-4.0.15...
Danke schonmal, dass ihr euch die Mühe gemacht habt soweit zu lesen....
EDIT:
hier die Exceptionsjava.lang.ClassNotFoundException: com.mysql.jdbc.Driver
java.sql.SQLException: No suitable driver