Heinz: JDBC: Where-clause mit Like richtig quoten.

Hallo *,

ich habe ein SQL-Statement der Form
"SELECT * FROM tabelle WHERE name LIKE '?%'"
Leider kann ich hier kein PerparedStatement verwenden und dann st.setString(1, "Mar") machen (um z.B. alle Namen die mit 'Mar' beginnen zu finden).
Was ist der richtige Weg mit JDBC-Bordmitteln ohne eine SQL-Injection zu riskieren.

Gruß

  1. Hallo,

    ich habe ein SQL-Statement der Form
    "SELECT * FROM tabelle WHERE name LIKE '?%'"
    Leider kann ich hier kein PerparedStatement verwenden und dann st.setString(1, "Mar") machen (um z.B. alle Namen die mit 'Mar' beginnen zu finden).

    Ich hab's nicht probiert, aber müßte nicht folgendes gehen?

    "SELECT * FROM tabelle WHERE name LIKE ?"
    st.setString(1, "Mar%")

    Wo du das % reinschreibst, ist ja eigentlich egal.

    Was ist der richtige Weg mit JDBC-Bordmitteln ohne eine SQL-Injection zu riskieren.

    Was hat das damit zu tun?

    Gruß
    Slyh

  2. am besten prüfst du zunächst die variable welche in der WHERE klausel benutzt werden soll und eliminierst zumindest die quotes.
    dann kannst du das select aus 3 teilstrings verketten:
    "SEL ... LIKE '" + variable + "%'"