Antworten

Thema: [java] Servlets und Datenbanken

Nachricht

Klicke hier, um dich anzumelden

 

Du kannst aus dieser Liste ein Symbol für deine Nachricht auswählen.

Zusätzliche Einstellungen

  • Wenn du diese Option aktivierst, werden URLs automatisch mit BB-Code ergänzt. www.beispiel.de wird zu [URL]http://www.beispiel.de[/URL].

Thema bewerten

Wenn du möchtest, kannst du dieses Thema bewerten.

Übersicht (Neuester Beitrag zuerst)

  • 13.01.2004
    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
    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 Datenbankzugriff

    Code:
    import 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

    Code:
    //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 Exceptions
    Code:
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
     java.sql.SQLException: No suitable driver

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Ja
  • Beiträge bearbeiten: Ja
  •