übergibt Parameter an eine JDBC PreparedStatement

8

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.

%Vor%

aber es scheint nicht funktionieren.

    
user1708134 05.10.2012, 11:21
quelle

6 Antworten

21

Sie sollten setString() Methode zum Festlegen der userID . Dies stellt sicher, dass die Anweisung richtig formatiert ist und verhindert SQL injection :

%Vor%

Es gibt ein nettes Tutorial, wie man PreparedStatement s in den Java Tutorials .

    
Keppil 05.10.2012, 11:24
quelle
3

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 .

    
Paulius Matulionis 05.10.2012 11:27
quelle
1

Machen Sie so etwas, was auch SQL-Injection-Angriffe verhindert %Vor%     

aws 05.10.2012 11:25
quelle
1

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 >

    
Nandkumar Tekale 05.10.2012 11:26
quelle
1

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 ..

verwenden %Vor%     
Rohit Jain 05.10.2012 11:25
quelle
0

Das Problem war, dass Sie "';" hinzufügen mussten. Am Ende.

    
Jessica Pereira 24.08.2017 18:31
quelle

Tags und Links