sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man använder PreparedStatement och Case Insensitive sökning

Gör familyName eller givenName till gemener också eftersom du redan använder LOWER DB API

String query ="SELECT agent.familyname, agent.givenname" +
                        " FROM agent" +
                        " WHERE agent.agentid = piececreation.agentid" +
                        " AND (LOWER(familyname) = '"+agent_lastname.toLowerCase()+"' OR LOWER(givenname) = '"+agent_name.toLowerCase()+"') ORDER by familyname";

När du använder PreparedStatement lägg inte till värden direkt i din SQL, om du gör det är du benägen att SQL-attack parametrisera istället dina värden.

String query = 
                "SELECT agent.familyname, agent.givenname"
                + " FROM agent"
                + " WHERE agent.agentid = ?"
                + " AND (" 
                + " LOWER(familyname) = ? OR LOWER(givenname) = ?" 
                + ") " 
                + " ORDER by familyname";


        pst.setInt(1, piececreation.agentid);
        pst.setString(2, agent_lastname.toLowerCase());
        pst.setString(3, agent_name.toLowerCase());

Ställ sedan in värden som anropar lämpliga setXXX-metoder enligt definition här .

Du kan läsa handledningen här



  1. Få Hibernate och SQL Server att spela bra med VARCHAR och NVARCHAR

  2. Dödläge i MySQL på grund av infogning av flera trådar

  3. Få insert_id för alla rader infogade i en enda mysqli-fråga (flera värden)

  4. Samla annonsklick och visningar