Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Operator PostgreSQL JSON(B) dengan Tanda Soalan Menggunakan JDBC?

Bagaimana Mengendalikan Operator PostgreSQL JSON(B) dengan Tanda Soalan Menggunakan JDBC?

Linda Hamilton
Linda Hamiltonasal
2024-12-22 18:52:10965semak imbas

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

Mengendalikan Operator PostgreSQL JSON(B) dengan Aksara Tanda Soalan melalui JDBC

PostgreSQL menggunakan operator seni ASCII yang mengandungi aksara tanda soal ""?" untuk operasi JSON. Walau bagaimanapun, pemandu rasmi PostgreSQL JDBC mentafsirkan tanda soal ini sebagai pembolehubah mengikat JDBC biasa, mengakibatkan ralat semasa menggunakannya.

Penyelesaian

Untuk menggunakan operator ini melalui JDBC, dua penyelesaian boleh digunakan:

Pernyataan Statik:

Gunakan pernyataan statik dan bukannya pernyataan yang disediakan Pendekatan ini memudahkan penggunaan tetapi menghapuskan kelebihan kenyataan yang disediakan, termasuk peningkatan prestasi dan perlindungan suntikan SQL.

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

Pendekatan Berasaskan Fungsi:

Elakkan operator dengan menggunakan fungsi asas yang tersedia dalam pg_catalog . Untuk mengenal pasti nama fungsi yang dikaitkan dengan operator tertentu, laksanakan SQL berikut pertanyaan:

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

Untuk operator "?|"", ini menghasilkan:

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

Ganti operator dengan fungsi yang sepadan dalam pernyataan JDBC:

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

Atas ialah kandungan terperinci Bagaimana Mengendalikan Operator PostgreSQL JSON(B) dengan Tanda Soalan Menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn