java
  • sql
  • jsp
  • 2017-01-30 6 views -2 likes 
    -2

    Ich möchte eine SQL-Abfrage schreiben, die Parameter von einer JSP enthält. Ich habe versucht, es wie diesesWie übergebe ich JSP-Parameter an eine SQL-Abfrage?

    String sqlstring = "\"select"+Activity+" from backgroundcost where onpremprice =' " 
             +service+" '\""; 
    PreparedStatement ps = con.prepareStatement(sqlstring); 
    ResultSet rs = ps.executeQuery(); 
    

    Ich erhalte eine Fehlermeldung.

    +0

    Welchen Fehler bekommen Sie? – Flown

    +0

    MysqlsyntaxerrorException –

    +0

    Bitte aktualisieren Sie Ihre Frage und fügen Sie den StackTrace hinzu. – Flown

    Antwort

    0

    Nicht ist die kurze Antwort. Es ist ein schlechtes Design, Datenbanklogik in Ihrer Ansicht zu haben. Übergeben Sie die Params von Ihrem JSP zu einem Back-End-Java-Bean und lassen Sie die Abfrage

    1

    Zunächst hoffe ich, dass Sie service ist eine Variable, die von einer Form Ihrer JSP kommt, dass diese Variable endet in Ihr Controller und dass Ihr Controller den Zugriff auf die Datenbankebene an eine andere Klasse delegiert.

    Es gibt mehrere Probleme mit Ihrer Anfrage:

    1. Sie verwenden Anführungszeichen in Ihrer SQL-Abfrage, Sie sollten nicht.
    2. Was ist Activity? Vermutlich vermissen Sie ein Leerzeichen zwischen "Auswahl" und dem Wert von "Aktivität"
    3. Das Ziel einer "PreparedStatement" ist SQL Injection zu vermeiden. Sie MÜSSEN den Code, den ich unten zeige, anstelle Ihres Parameters verwenden, der direkt in Ihre gebaute SQL-Anweisung eingefügt wird.

    4. Betrachten StringBuilder verwenden, wenn Sie mehrere String Verkettungen

    "

    String sqlstring = "select activity from backgroundcost where onpremprice = ?"; 
    
    PreparedStatement ps = con.prepareStatement(sqlstring); 
    ps.setString(1, service); 
    ResultSet rs = ps.executeQuery(); 
    
    +2

    Vielen Dank, Sir, für Ihre ausführliche Erklärung. Ich habe meine Fehler und antworte auch. Vielen Dank! –

    +0

    Sie sind willkommen. Sie können dann meine Antwort als gültige Antwort auswählen :) – user2447161

    0

    es so ..

    String sqlstring = "select * from backgroundcost where onpremprice ='"+service+" '"; 
    PreparedStatement ps = con.prepareStatement(sqlstring); 
    ResultSet rs = ps.executeQuery(); 
    

    // anstelle von * machen haben, können Sie Geben Sie den Spaltennamen ein, der ausgewählt werden soll.

    Verwandte Themen