>데이터 베이스 >MySQL 튜토리얼 >JDBC를 사용하여 물음표가 있는 PostgreSQL JSON(B) 연산자를 처리하는 방법은 무엇입니까?

JDBC를 사용하여 물음표가 있는 PostgreSQL JSON(B) 연산자를 처리하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-22 18:52:10962검색

How to Handle PostgreSQL JSON(B) Operators with Question Marks Using JDBC?

JDBC를 통해 물음표 문자가 포함된 PostgreSQL JSON(B) 연산자 처리

PostgreSQL은 JSON 작업에 물음표 ""?" 문자가 포함된 ASCII 아트 연산자를 활용합니다. 그러나 공식 PostgreSQL JDBC 드라이버는 이러한 물음표를 일반 JDBC 바인드 변수로 해석하여 사용 시 오류가 발생합니다.

해결 방법

JDBC를 통해 이러한 연산자를 사용하려면 두 가지 해결 방법을 적용할 수 있습니다.

정적 문:

정적 사용 이 접근 방식은 사용을 단순화하지만 성능 향상 및 SQL 주입을 포함하여 준비된 문의 이점을 제거합니다. 보호.

try (Statement s = c.createStatement();
     ResultSet rs = s.executeQuery("select '{}'::jsonb ?| array['a', 'b']")) {
     ...
}

함수 기반 접근 방식:

pg_catalog에서 사용할 수 있는 기본 함수를 사용하여 연산자를 피합니다. 특정 연산자와 관련된 함수 이름을 식별합니다. , 다음 SQL 쿼리를 실행합니다.

SELECT 
  oprname, 
  oprcode || '(' || format_type(oprleft,  NULL::integer) || ', ' 
                 || format_type(oprright, NULL::integer) || ')' AS function
FROM pg_operator 
WHERE oprname = '?|';

"?|"" 연산자의 경우 이 산출량:

oprname  function
----------------------------------------------------------------------------------
?|       jsonb_exists_any(jsonb, text[])

연산자를 JDBC 문의 해당 함수로 대체:

try (PreparedStatement s = c.prepareStatement(
         "select jsonb_exists_any('{}'::jsonb, array['a', 'b']");
     ResultSet rs = s.executeQuery()) {
     ...
}

위 내용은 JDBC를 사용하여 물음표가 있는 PostgreSQL JSON(B) 연산자를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.