sql >> Databáze >  >> RDS >> PostgreSQL

Jak používat PreparedStatement a vyhledávání bez rozlišení velkých a malých písmen

Upravte familyName nebo GivenName také na malá písmena, protože již používáte 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";

Když používáte PreparedStatement nepřipojujte hodnoty přímo do SQL, pokud tak učiníte, jste náchylní k útoku SQL místo toho parametrizujte své hodnoty.

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());

Poté nastavte hodnoty voláním vhodných metod setXXX, jak je definováno zde .

Výukový program si můžete přečíst zde



  1. Problém agregační funkce MySQL

  2. Jak převést výsledkovou tabulku na pole JSON v MySQL

  3. PostgreSQL Reverzní LIKE

  4. ČASOVÁ ZNAČKA MySQL (VÝCHOZÍ + PŘI AKTUALIZACI).