JDBC und MySQL

  1. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    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:
    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
     
    moses_78, 22.08.2006
  2. Sojus

    SojusMacUser Mitglied

    Mitglied seit:
    30.05.2006
    Beiträge:
    143
    Zustimmungen:
    3
    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
     
    Sojus, 22.08.2006
  3. gishmo

    gishmoMacUser Mitglied

    Mitglied seit:
    16.03.2004
    Beiträge:
    813
    Zustimmungen:
    23
    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.
     
    gishmo, 22.08.2006
  4. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    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 :(
     
    moses_78, 23.08.2006
  5. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    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
     
    wegus, 23.08.2006
  6. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    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?
     
    moses_78, 23.08.2006
  7. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    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ß!
     
    wegus, 23.08.2006
  8. Sojus

    SojusMacUser Mitglied

    Mitglied seit:
    30.05.2006
    Beiträge:
    143
    Zustimmungen:
    3
    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, 23.08.2006
  9. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    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, 23.08.2006
  10. Sojus

    SojusMacUser Mitglied

    Mitglied seit:
    30.05.2006
    Beiträge:
    143
    Zustimmungen:
    3
    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
     
    Sojus, 23.08.2006
Die Seite wird geladen...
Ähnliche Themen - JDBC MySQL
  1. derCalle
    Antworten:
    14
    Aufrufe:
    1.504
    derCalle
    12.03.2009
  2. applejoe
    Antworten:
    4
    Aufrufe:
    4.206
    oglimmer
    07.10.2006
  3. tavgm
    Antworten:
    10
    Aufrufe:
    4.656
  4. derschie
    Antworten:
    5
    Aufrufe:
    1.400
    minerva
    11.06.2005
  5. labba_mout
    Antworten:
    20
    Aufrufe:
    2.264
    was dagegen ?
    20.01.2007