Ralat Postgresql: "Lajur tidak wujud" dalam Operasi Java DELETE
Apabila mencuba operasi DELETE menggunakan Java dan PostgreSQL, seseorang mungkin menghadapi ralat "column 'column_name' tidak wujud." Masalah ini timbul apabila nama lajur yang dimaksudkan mengandungi huruf besar.
Dalam PostgreSQL, pengecam pangkalan data (cth., nama jadual dan lajur) mesti dipetik jika ia mengandungi aksara besar. Ini kerana laluan carian skema lalai adalah tidak peka huruf besar dan kecil dan petikan memastikan bahawa nama yang tepat digunakan.
Penyelesaian:
Untuk menyelesaikan ralat, letakkan sahaja petikan berganda di sekeliling nama lajur dalam pernyataan SQL:
String stm = "DELETE FROM hostdetails WHERE \"MAC\" = 'kzhdf'";
Sebagai alternatif, anda boleh menggunakan interpolasi Rentetan untuk bina pernyataan SQL secara dinamik dengan nama lajur yang dipetik:
String column = "MAC"; String stm = String.format("DELETE FROM hostdetails WHERE \"%s\" = 'kzhdf'", column);
Pertimbangan Tambahan:
Apabila menggunakan pernyataan yang disediakan, adalah disyorkan untuk mengelak daripada menetapkan parameter pertanyaan terus dalam rentetan SQL. Sebaliknya, gunakan kaedah PreparedStatement untuk mengikat parameter:
pst.setString(1, "kzhdf");
Ini menghalang potensi kelemahan suntikan SQL dan menjadikan kod lebih boleh diselenggara.
Atas ialah kandungan terperinci Mengapa Pernyataan PostgreSQL DELETE Saya di Java Gagal dengan 'Lajur tidak wujud'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!