JDBC und MySQL

moses_78

moses_78

Aktives Mitglied
Thread Starter
Dabei seit
08.04.2005
Beiträge
1.288
Reaktionspunkte
22
Tach Zusammen,

ich bastele z.zt. mit Java herum. Leider sind meine Versuche, mit Java
auf die MySQL-Datenbank zuzugreifen, bis jetzt kläglich gescheitert. Ec-
lipse meldet beim Übersetzen folgendes:
Unhandled exception type ClassNotFoundExeption
Offensichtlich ist also die Klasse "com.mysql.jdbc.Driver" nicht installiert.
Also habe ich mir den "MySQL Connector/J" von http://dev.mysql.com/
downloads/ gesaugt, entpackt, und nach /System/Library/Frameworks/
JavaVM.framework/Versions/1.5.0/Home/lib/ext kopiert.

Meine Fragen: Habe ich die Fehlermeldung richtig interpretiert? Habe
ich das richtige Jar an den richtigen Ort kopiert? Java sollte auf dem
neuesten Stand sein.

Hier noch der Code (Die Stelle mit dem Fehler markiert...):
Code:
import java.io.*;
import java.sql.*;
// import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class db extends HttpServlet 
{
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws IOException, ServletException
    {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();

		Connection verbindung = null;
		Statement query = null;
		ResultSet set = null;
		
		out.println("<html>");
		out.println("<head>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>Kleines Servlet mit MySQL-Zugriff</h1>");
				
		try
		{
			Class.forName("com.mysql.jdbc.Driver"); // <-- FEHLER!
			
			verbindung = DriverManager.getConnection("jdbc:mysql://localhost:3306/personen", "root", "***");
			query = verbindung.createStatement();
			set = query.executeQuery("SELECT * FROM personen");
			ResultSetMetaData set_daten = set.getMetaData();
			int anz_ergebnisse = set_daten.getColumnCount();
			
			out.println("<h1>" + anz_ergebnisse + "</h1>");
		}
		finally
		{
			try { verbindung.close(); } catch (Exception e) {}
			try { query.close(); } catch (Exception e) {}
			try { set.close(); } catch (Exception e) {}
		}
		
     }	
}

Gruß Mathias
 
ich hatte mit dem Jar über den Classpath auch probleme. Habe das Problem dann gelöst in dem ich das jar entpackt habe und den Inhat in meinen Eclipse Projektordner gepackt habe.

mfg
 
Leg die jar doch mal nach /Library/Java/Extensions bzw. einen Alisas dorthin, der uaf deine jar zeigt. Klappt bei Frontbase gut.

Baust Du ein Programm, was Du später deployen willst, gehört die jar zu den anderen jars in Projekt.
 
So, Freunde, danke erstmal für die Tipps.

Leider wird das benötigte Jar immer noch nicht korrekt
eingebunden. Ich habe alles ($CATALINA_HOME, Root
der Webapp, WEB-INF/classes, WEB-INF/libs) mit die-
sem Jar zugepflastert, aber es funktioniert einfach nicht :(
 
Die Jar-Datei gehört beim Tomcat nach

$CATALINA_HOME/common/lib/

dann schreibst Du in Deiner Applikation in META_INF in die context.xml einen Eintrag a la:

PHP:
        <Resource
                name="jdbc/inUse"
                auth="Container"
                type="javax.sql.DataSource"
                maxActive="30"
                maxIdle="10"
                maxWait="10000"
                username="webuser"
                password="secret"
                driverClassName="net.sourceforge.jtds.jdbc.Driver"
                url="jdbc:jtds:sqlserver://pcnt01:1433/jv23;user=webuser;password=secret" />

Dann brauchst Du auch die Klasse nicht mehr explizit laden! Das Beispiel hier ist mit dem MS SQL-Server, es geht aber genauso für mysql auch!

Ich such mal den link zur Apache-Doku dazu....


EDIT:

so gehts dann im Servlet:

PHP:
Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/inUse");
Connection conn = ds.getConnection();


ich ziehe es vor die Verbindung in den context der jeweiligen Anwendung zu schreiben, statt in die server.xml,
ansonsten ist das Ganze hier beschrieben:

http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html
 
Zuletzt bearbeitet:
Wegus: Vielen Dank, aber was soll ich machen,
wenn Eclipse das Ding noch nichtmal ordentlich
kompiliert, sondern die in #1 erwähnten Fehler-
meldungen asuspuckt?
 
weiß ich nicht, ich nehm netbeans *duck*


Ernsthaft: Die jar-Datei muß dem CLASSPATH Deines Projektes hinzugefügt werden. Das geht bei den Projekt-Properties, soweit ich das bei Eclipse weiß!
 
Also ich habe bei mir die *jar datei in das Verzeichnis getan auf das mein Classpath verweist. Bei meinem Win ist das: C:\Programme\Java\jre1.5.0_06\lib\ext

kannst du natürlich auch mit eclipse einbinden aber so gehts auch.

Dann habe ich dein Programm mal auf das reduziert:

Code:
import java.sql.*;

public class db
{
	public static void main(String[] args) throws Exception{
		Connection verbindung = null;
		Statement query = null;
		ResultSet set = null;
		
		Class.forName("com.mysql.jdbc.Driver"); 
																			  //DB    //User  //PW
		verbindung = DriverManager.getConnection("jdbc:mysql://localhost:3306/suem", "suem", "12345");
		query = verbindung.createStatement();
		set = query.executeQuery("SELECT * FROM suem");//query
		set.next();
		System.out.println(set.getString(1));
	}
}

und so konnte ich problemlos auf meine DB connecten und die daten auslesen


mfg
 
Sojus schrieb:
Dann habe ich dein Programm mal auf das reduziert:
Habs mal auf der Kommandozeile mit Javac kompiliert. Ergebnis:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: db/class
Ich kriege langsam soooooooo einen Hals....Warum
tue ich mir dieses Java-gedöns eigentlich an?

Weiterhin auf Hilfe hoffend, und sich für die bis jetzt
angebotene Hilfe bedankend,
Mathias
 
moses_78 schrieb:
Habs mal auf der Kommandozeile mit Javac kompiliert. Ergebnis:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: db/class
Ich kriege langsam soooooooo einen Hals....Warum
tue ich mir dieses Java-gedöns eigentlich an?

Weiterhin auf Hilfe hoffend, und sich für die bis jetzt
angebotene Hilfe bedankend,
Mathias
Das ist so ein toller Java Error. Das passiert wenn man in der Konsole kompiliert. Mit eclipse passiert das nicht.

Wenn das jar file im Classpath ist sollte es eigentlich funktionierern..........sollte ^^


PS: Kinderleichten Mysql zugang gibts natürlich mit PHP aber da kannst du nur serverseitige Websachen machen.... und ich hasse PHP
 
Zuletzt bearbeitet:
Es funktioniert :eek:

In Eclipse zumindest.
 
moses_78 schrieb:
Es funktioniert :eek:

In Eclipse zumindest.
Juhu sieg :D

wenn dein Programm mal fertig ist kannst du es mit eclipse wunderbar als jar exportieren


viel spass noch mit java

gute n8
 
Beim mir funktioniert es, wenn ich das jar in /Library/Java/Extensions lege. Ich würde es lieber in den Projektordner entpacken. Seltsamerweise funktioniert

jar -x mysql-connector-java-5.0.3-bin.jar

nicht. Jar rödelt minutenlang bis ich es mit Apfel-x beende.
 
Du musst in deinem Java-Projekt in Eclipse den MySql-JDBC.jar laden, damit diese im Projektpfad liegt. Sonst kennt Eclipse die ja nicht. (abh. von der verwendeten Java VM)

Das machst Du unter den Projekteigenschaften -> Java Build Path -> Libaries.
Unter Order & Export kannst Du dann bestimmen, ob diese jar mit deployed werden soll, oder ob Du die jar aus einem anderen Verzeichnis nimmst.
 
@gishmo
Danke für den Tip. Funktioniert bestens.
 
Zurück
Oben Unten