Ich versuche meine Validierungsklasse für mein Programm zu erstellen. Ich stelle bereits die Verbindung zur MySQL-Datenbank her und habe bereits Zeilen in die Tabelle eingefügt. Die Tabelle besteht aus den Feldern firstName
, lastName
und userID
. Jetzt möchte ich eine bestimmte Reihe in der Datenbank durch meinen Parameter meines Konstruktors auswählen.
aber es scheint nicht funktionieren.
Sie sollten setString()
Methode zum Festlegen der userID
. Dies stellt sicher, dass die Anweisung richtig formatiert ist und verhindert SQL injection
:
Es gibt ein nettes Tutorial, wie man PreparedStatement
s in den Java Tutorials
Wenn Sie eine vorbereitete Anweisung verwenden, sollten Sie sie wie folgt verwenden:
%Vor%Verwenden Sie dann:
%Vor% ?
wird in Ihrer Abfrage durch die Benutzer-ID ersetzt, die an die Methode setString
übergeben wurde.
Schauen Sie hier nach, wie Sie PreparedStatement .
Sie können '?' benutzerdefinierte Parameter in Zeichenfolge mithilfe von PreparedStatments festlegen.
%Vor%Wenn Sie die Benutzer-ID in der Abfrage direkt übergeben, wird sie möglicherweise von SQL INJECTION Attack angegriffen >
Es gibt ein Problem in Ihrer Anfrage ..
%Vor% Sie verwenden Prepare Statement .. Sie müssen also Ihren Parameter mit statement.setInt()
oder statement.setString()
einstellen, abhängig von dem Typ Ihres userId
Ersetzen Sie es durch: -
%Vor% Oder Sie können ?
anstelle des benannten Wertes - :userId
..