2017-05-26 3 views
-6
try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    con=DriverManager.getConnection("jdbc:mysql://localhost/phpMyAdmin/Database_Name","root",""); 
    stmt=con.createStatement(); 
    } 

Dies ist mein Code, um eine Verbindung herzustellen, b/w meinem Computer und Datenbank und danach ich den Benutzernamen und das Passwort von dem Benutzer empfangen und ich führen Sie dann diese AbfrageSQL-Abfrage durch Java-Rückkehr „java.lang.NullPointerException“

try { 
     rs=stmt.executeQuery("SELECT * FROM d 
     teacher_info WHERE UserName 
     = '"+userName+"' AND teacher_info.password 
     ="+password); 
    } 

Das Problem ist, dass wenn ich die Abfrage ausführen i java.lang.NullPointerException 3-mal in Folge Irgendwelche Ideen, warum dies könnte geschehen bekommen?

+1

Erfahren Sie mehr über vorbereitete Anweisungen fehlt für SQL-Injection – Jens

+0

Read [fragen] und verbessern Sie Ihre Frage zu verhindern. Fügen Sie ein [mcve] – Jens

+1

, das ist nicht, wie Sie Abfragen in 2017 schreiben, offen für SQL-Injektion, http://bobby-tables.com/ https://en.wikipedia.org/wiki/SQL_injection – luk2302

Antwort

4

Es gibt mehrere Probleme mit Ihrer Anfrage und Code

  1. fehlt Raum hier = '"+userName+"' AND teacher_info

  2. Sie nicht eine andere Tabellenspalte teacher_info.password so einfach ohne irgendeine Art von JOIN (join mit dem Zugriff auf (Tabelle)

  3. nicht Benutzereingaben wie diese verketten lieber mit parametrisierten Abfrage zu vermeiden SQL-Injection-Angriff

  4. auch einfache Anführungszeichen ' auf diesen einen .password ="+password);

+2

Außerdem fehlen zwei ''' auf diesem '.password =" + Passwort); ' – Luke

+0

1. wo genau fehlt der Raum? 2 @Luke nur, wenn das Passwort eine Zeichenfolge ist.Wenn es nur Ziffern, dann ist es oaky – XtremeBaumer

+0

@Luke, netter Fang ... in der Antwort enthalten.Dank – Rahul

Verwandte Themen