Verbindung mit MySQL schlägt fehl


#1

Hallo zusammen, ich habe folgendes Problem, ich kann mich nicht mit der MySQL Datenbank Verbinden. mein Code sieht so aus
Ich habe mit gestern den Java Conector heruntergeladen. Und als datenbank hab ich xampp mySql

 try {
            // TODO add your handling code here:
           
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/jcloud","ben","pwd" );
            Statement cmd = (Statement) con.createStatement();
            
            String abfrage = "Select * From Users Where username='" + jTextField1.getText() +"'";
            ResultSet rs = cmd.executeQuery(abfrage);
            while(rs.next()){
                String refpwd = rs.getString(2);
                if(refpwd==jPasswordField1.getText()){
                    JOptionPane.showMessageDialog(null, "Das Passwort ist Korrekt, Wilkommen in der jCloud " + jTextField1.getText() + " Sie können nun die Cloud Benutzen.", "Wilkommen in der jcloud", JOptionPane.OK_CANCEL_OPTION);
                }
                else{
                    JOptionPane.showMessageDialog(null, "Falsches Passwort", "Falsches Kennwort", JOptionPane.OK_CANCEL_OPTION);
                }
            }
            
            
        } catch (SQLException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        

und ich bekomm den Fehler

Aug 27, 2013 1:16:25 PM jcloud.Main jButton1ActionPerformed
SEVERE: null
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:190)
	at jcloud.Main.jButton1ActionPerformed(Main.java:201)
	at jcloud.Main.access$100(Main.java:22)
	at jcloud.Main$2.actionPerformed(Main.java:97)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener$Actions.actionPerformed(BasicButtonListener.java:303)
	at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1664)
	at javax.swing.JComponent.processKeyBinding(JComponent.java:2879)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2926)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2842)
	at java.awt.Component.processEvent(Component.java:6282)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727)
	at java.awt.Component.dispatchEventImpl(Component.java:4731)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

leider kann ich mit der Fehler meldung nicht viel anfangen.


#2

Die .jar ist nicht im Classpath?

http://wiki.byte-welt.net/wiki/Datenbankverbindung_(Java)


#3

Wie meinst du das ? ich hab das installiert den Conector und da gibt es keine Jar ??


#4

Wie hast du den Connector denn installiert?


#5

Habs danke :slight_smile: der Connector wurde in das Programme Verzeichniss installiert. So nun hab ich aber das Problem

[sql]SELECT * FROM user WHERE username= + ‘jTextField1.getText()’;[/sql]

Funktioniert nicht allso der gibt mir keine Daten aus. Mein Code ist

ResultSet rs = cmd.executeQuery(abfrage);
            while(rs.next()){
                String refpwd = rs.getString(2);
                if(refpwd==jPasswordField1.getText()){
                    JOptionPane.showMessageDialog(null, "Das Passwort ist Korrekt, Wilkommen" + jTextField1.getText() + " Sie können nun die Cloud Benutzen.", "Wilkommen in der jcloud", JOptionPane.OK_CANCEL_OPTION);
                }
                else{
                    JOptionPane.showMessageDialog(null, "Falsches Passwort", "Falsches Kennwort" + refpwd, JOptionPane.OK_CANCEL_OPTION);
                }
            }

#6

Wie sieht den der String abfrage (im Code) aus?

Allgemein: Verwende bei soetwas PreparedStatements: Weniger Fehlermöglichkeiten, Schutz vor SQL Injection…

*** Edit ***

OK, habe das Statement gerade im ersten Post gefunden.

Problem:

Objekte inkl. Strings vergleicht man mit equals auf Gleichheit.


#7

Nein das Problem ist das das [ic]refpwd[/ic] nicht deklariert wird weil er mit meiner Afrage keinen Datensatz findet. Da stimmt was nicht mit meier SQL Anweisung


#8

Naja, der Vergleich ist dennoch falsch.
Du bist Dir also sicher, dass die while Schleife niemals betreten wird? Die einfachste Möglichkeit zur Analyse wäre einfach mal das SQL Statement auszugeben. Irgendwelche Aufälligkeiten? Nein, die Ausgabe kopieren und direkt auf der Datenbank ausführen. Wird hier ein Ergebnis geliefert?


#9

Stringvergleich mit == ist falsch, equals

und

lass dir mal den SQL-String ausgeben, bestimmt ein Hochkommaproblem