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
Lepaskan: 2024-12-22 18:52:10
asal
1001 orang telah melayarinya

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']")) {
     ...
}
Salin selepas log masuk

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 = '?|';
Salin selepas log masuk

Untuk operator "?|"", ini menghasilkan:

oprname  function
----------------------------------------------------------------------------------
?|       jsonb_exists_any(jsonb, text[])
Salin selepas log masuk

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()) {
     ...
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan