# JSP n verfluchte JDBC



## Illuminatus235 (25. Okt 2006)

Nabend bzw Morgän,

 habe da ne kleien frage bekomme von meinem Tomcat 5.5.20 eine tolle fehlermeldung



> type Exception report
> 
> message
> 
> ...



Bin noc net ganz hintergestiegen desween hier noch der code 


```
public void setCon() {
		try {
		Class.forName("org.gjt.mm.mysql.Driver");
		try {		
this.con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db,user,pass);
} catch (SQLException ex) {
				System.out.println("SQLException: " + ex.getMessage());
				System.out.println("SQLState: " + ex.getSQLState());
				System.out.println("VendorError: " + ex.getErrorCode());
			}
} catch (ClassNotFoundException e) {
e.getException();
		}		
setQuery();

	}
```

das ist die function die aufgerufen wird, aufgerufen wird wie folgt:


```
mysql.setDb("mysql"); //setter
mysql.setUser("root");//setter
mysql.setPass("");//setter
mysql.setHost("localhost");//setter
mysql.setCon();//starten
```

Nr leider bekome ich imm den fehler das bei mysql.setCon() der Fehler liegt ich hoffe ihr habt eine Idee
soweit euer Illuminat23


----------



## KSG9|sebastian (25. Okt 2006)

Ich würd sagen dass der Mysql-Treiber nicht gefunden wird.


----------



## Illuminatus235 (25. Okt 2006)

mmh also ich habe wies in meinen netten buch steht den Treiaber in den lib Ordner von Tomcat geworfen und trotzdem bekomme ich den Fehler und richtig aufrufen tuhe ich den eigentlich auch....

so mmh die fehlermeldung sit glaube ich etwas neu xD



> HTTP Status 500 -
> 
> type Exception report
> 
> ...



Wie gesagt Treibe sit da und aufgerufen ...
Finde den Fehler nichth abe die mysql klasse umgebaut und so einiges weiteres...


----------



## KSG9|sebastian (25. Okt 2006)

Deploy ein einfaches Servlet welches nur den Treiber lädt. Wenn das nicht geht hast du den Fehler.
Und in welchen lib-Ordner hast du den Treiber gepackt. Mir fallen so spontant ca. 3 Lib Ordner ein 

- lib-Ordner der Anwendung (WEB-INF/lib)
- shared/lib-Ordner von Tomcat ($TOMCAT_HOME\shared\lib)
- lib-Ordner für Tomcat, nicht für die Anwendungen


----------



## Illuminatus235 (25. Okt 2006)

So der Treiber liet in 
C:\Tomcat 5.5\webapps\ROOT\WEB-INF\lib
C:\Tomcat 5.5\shared\lib
C:\Tomcat 5.5\common\lib



mm habe bissl rumgetestet bekomme immer den selben fehler!

Ich bin mal so frei und schreib mal die mysql.java und die index.jsp hier rein
INDEX.JSP

```
<%@ page session="true"%>
<html>
<head>
</head>
<body>

<%!
int zaehler = 0;
String lastname="";
 %>
 <% 
 String name=request.getParameter("name");
 %>
Hallo <%= name %> vor dir war <%=lastname%> da, mit der nummer <%=zaehler%>!
<%
lastname=name;
++zaehler;
%>
<hr>


DATENBANK


<jsp:useBean id="mysql"class="mysql.mysql"/>
<%@page language="java" import="java.sql.*"%>
<%
mysql.setDb("mysql");
mysql.setUser("root");
mysql.setPass("");
mysql.setHost("localhost");

mysql.setCon();

%>
</body>
</html>
```

mysql.java


```
package mysql;	
import java.sql.*;

public class mysql {

	private String host="",user="",pass="",db="";
	private Connection con;
	private Statement query;
	private ResultSet result;
	
	public Connection getCon() {
		return con;
	}
	public void setCon() {
		try{
			try{
			Class.forName("com.mysql.jdbc.Driver");
		this.con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db,user,pass);
			} catch (SQLException ex) {
				System.out.println("SQLException: " + ex.getMessage());
				System.out.println("SQLState: " + ex.getSQLState());
				System.out.println("VendorError: " + ex.getErrorCode());
			}
		} catch (ClassNotFoundException e) {
			e.getException();
		}
		setQuery();

	}
	
	private void setQuery(){
try{
		query=con.createStatement();
} catch (SQLException ex) {
	System.out.println("SQLException: " + ex.getMessage());
	System.out.println("SQLState: " + ex.getSQLState());
	System.out.println("VendorError: " + ex.getErrorCode());
}
		}
	
	public ResultSet query(String querys){
			try{
		return result=query.executeQuery(querys);
			} catch (SQLException ex) {
				System.out.println("SQLException: " + ex.getMessage());
				System.out.println("SQLState: " + ex.getSQLState());
				System.out.println("VendorError: " + ex.getErrorCode());
				return result;
			}
	}
	public boolean Insert(String a,String b){
		try{
		query.executeUpdate("Insert into "+a+" "+b);
		return true;
		} catch (SQLException ex) {
			System.out.println("SQLException: " + ex.getMessage());
			System.out.println("SQLState: " + ex.getSQLState());
			System.out.println("VendorError: " + ex.getErrorCode());
		return false;
		}
	}
	public boolean Update(String a,String b,String c){
		try{
		query.executeUpdate("update "+a+" set "+b+" "+c);
		return true;
		} catch (SQLException ex) {
			System.out.println("SQLException: " + ex.getMessage());
			System.out.println("SQLState: " + ex.getSQLState());
			System.out.println("VendorError: " + ex.getErrorCode());
		return false;
		}
	}
	public boolean Delete(String a,String b,String c){	
		try{
		query.executeUpdate("DELETE FROM "+a+" where "+b+"="+c);
		return true;
		} catch (SQLException ex) {
			System.out.println("SQLException: " + ex.getMessage());
			System.out.println("SQLState: " + ex.getSQLState());
			System.out.println("VendorError: " + ex.getErrorCode());
		return false;
		}
	}
	
	public void setDb(String db) {
		this.db = db;
	}
	public void setHost(String host) {
		this.host = host;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public void setUser(String user) {
		this.user = user;
	}
}
```


----------



## KSG9|sebastian (25. Okt 2006)

Klassen schreibt man groß
Methoden und Variablen klein

Und du sollst ein einfaches Servlet deployen welches den Treiber lädt..


```
public class TestServlet extends HttpServlet{
   public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException7
  try{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
  } catch(ClassNotFoundException nfe){
    nfe.printStackTrace();
  } catch(SQLException sqe){
    sqe.printStackTrace();
  }
}
}
```

Ach ja, warum verwendest du nicht com.mysql.jdbc.Driver?


----------

