Sie müssen Folgendes verwenden:
preparedStatement.executeQuery();
statt
preparedStatement.executeQuery(login);
wenn Sie eine Zeichenfolge an executeQuery()
übergeben das Abfrage wörtlich ausgeführt und damit der ?
wird an die Datenbank gesendet, die dann den Fehler erzeugt. Indem Sie eine Abfragezeichenfolge übergeben, führen Sie die "zwischengespeicherte" vorbereitete Anweisung, für die Sie die Werte übergeben haben, nicht aus.