sql >> データベース >  >> RDS >> PostgreSQL

PreparedStatementと大文字と小文字を区別しない検索の使用方法

    すでにLOWERDBAPIを使用しているため、familyNameまたはgivenNameも小文字にします

    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";
    

    PreparedStatementを使用している場合 SQLに直接値を追加しないでください。追加すると、SQL攻撃 が発生しやすくなります。 代わりに、価値観をパラメータ化します。

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

    次に、ここで定義されている適切なsetXXXメソッドを呼び出して値を設定します

    チュートリアルこちら を読むことができます。



    1. Oracle PL/SQLで呼び出し元のプロシージャまたは関数の名前を取得します

    2. データベース設計の質問

    3. テキストをXML準拠のテキストに変換/エンコードする方法はPL/SQLにありますか?

    4. 1つのSQLステートメントで複数のテーブルを更新する