# Datenbankzugriff im Servlet



## downandout (3. Jan 2012)

Ich versuche auf die Datenbank über ein Servlet zuzugreifen, das ist bis jetzt nur eine Testklasse, aber es funktioniert nicht, es scheitert beim Aufruf von:

```
Class.forName("oracle.jdbc.driver.OracleDriver");
```

Dort wird im Catch Block die Exception abgefangen mit dem Text: "oracle.jdbc.driver.OracleDriver"

Ich versteh nicht warum das nicht funktioniert, ich habe eine andere Klasse, allerdings eine reine Main Methode und diese funktioniert perfekt.

Wäre wirklich sehr dankbar wenn mir wer helfen könnte ich steh da schon eine lange Zeit an...


```
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

import javax.servlet.*;
import javax.servlet.http.*;

 public class regist extends HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;

	public regist() {
		super();

	} 
	
	public String connect(){
		
		String ausgabe = "";
		
	    try {
	    	Class.forName("oracle.jdbc.driver.OracleDriver");
	        String database = "jdbc:oracle:thin:@vier.cs.univie.ac.at:1521:o10g";
	        String user = "a1005759";
	        String pass = "xxxx";
	        Connection con = DriverManager.getConnection(database, user, pass);
	        Statement stmt = con.createStatement();
	        stmt.close();
	        con.close();
	        ausgabe+="alles ok";

	      } catch (Exception e) {
	       ausgabe+=(e.getMessage());
	      }
	    
	    return ausgabe;
	}
	

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	    PrintWriter out = response.getWriter();
	    response.setContentType("text/html");
	    
	    
	    out.println("<H3>" + "Zugriff auf regist.java erfolgreich" + "</H3>");
	    out.println("<H3>" + "Zugriff auf Oracel wird hergestellt" + "</H3>");
	    out.println(connect());

	}
	
}
```

Andere ähnliche Klasse ohne Servlet die funktioniert:


```
import java.sql.*;


public class CreateTables {

	
	
  public static void main(String args[]) {

	  try {
	      Class.forName("oracle.jdbc.driver.OracleDriver");
	      String database = "jdbc:oracle:thin:@vier.cs.univie.ac.at:1521:o10g";
	      String user = "a1005759";
	      String pass = "xxxx";

	      // establish connection to database 
	      Connection con = DriverManager.getConnection(database, user, pass);
	      Statement stmt = con.createStatement();

	      // check number of datasets in person table
	      ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM Person");
	      if (rs.next()) {
	        int count = rs.getInt(1);
	        System.out.println("Number of datasets: " + count);
	      }

	      // clean up connections
	      rs.close();
	      stmt.close();
	      con.close();

	    } catch (Exception e) {
	      System.err.println(e.getMessage());
	    }
    
  }
}
```


----------



## homer65 (3. Jan 2012)

Die genaue Fehlermeldung wäre interessant.
Was mir auf blauen Dunst einfällt, ist das die Klasse oracle.jdbc.driver.OracleDriver im Classpath nicht gefunden wird.
Der Oracle Treiber muß halt erst mal gefunden werden.


----------



## downandout (3. Jan 2012)

Es ist, wie du schon erraten hast, eine:
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

Aber ich verstehe nicht wie diese zustande kommen kann, da das andere Programm, das ich gepostet habe ja auch funktioniert, wieso findet er hier die Klasse nicht...

-.-

___________________________________________________________________

habs rausgefunden, die jar hat im tomcat ordner gefehlt


----------



## homer65 (3. Jan 2012)

Na das Servlet läuft wohl in einer anderen Umgebung. Da wird der Classpath unterschiedlich definiert sein.


----------



## mvitz (4. Jan 2012)

Welche IDE?
Wie sieht da das Projekt aus? (Screenshot hilft)
Wie sieht dein WAR File aus?
Wo genau liegt das JAR indem die Oracle Treiber sich befinden?


----------



## downandout (4. Jan 2012)

mvitz hat gesagt.:


> Welche IDE?
> Wie sieht da das Projekt aus? (Screenshot hilft)
> Wie sieht dein WAR File aus?
> Wo genau liegt das JAR indem die Oracle Treiber sich befinden?



das jar hat im Tomcat ordner gefehlt das war die lösung, aber danke für deinen Input


----------

