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

json内のJDBCプリペアドステートメントパラメータ

    実際、Github でJDBC開発者に連絡しました。 そして、いくつかの議論の後、現在のところ最善の解決策は、次のように準備されたステートメントを持つことであるように思われます:

    String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";
    

    検索条件全体をパラメーターの文字列化されたJSONオブジェクトとして渡します:

    PreparedStatement st = connection.prepareStatement(query);
    st.setString(1, "[\"id\":" + "id1" + "]");
    st.executeQuery();
    

    これは完璧なソリューションではありませんが、サーバー機能が不足しているため、可能な限り最善の方法のようです。結局のところ、SQLインジェクションのリスクが(理論的には)ないので、それほど悪くはありません。

    リンクされたGithubの問題の詳細。




    1. 複数のテーブルにまたがる大量のデータを取得し、クエリのループを回避する方法

    2. mysql Select from Select

    3. 複数の日付形式を日時Pythonに変換する方法はありますか

    4. MySQL Left()またはSUBSTRING()?