Rumah >Java >javaTutorial >Mengapa Saya Mendapat 'Ralat Sintaks MySQL berhampiran '?'' dengan PreparedStatement dalam Java?
Ralat Sintaks MySQL: "Anda Mempunyai Ralat dalam Sintaks SQL Anda" Semasa Melaksanakan PreparedStatement
Apabila melaksanakan pertanyaan menggunakan PreparedStatement, pengguna mungkin menghadapi ralat "MySQLSyntaxErrorException berhampiran "?"". Ralat ini menandakan ralat sintaks dalam pertanyaan SQL.
Dalam isu khusus ini, kod cuba untuk menggantikan parameter pertanyaan menggunakan '?`占位符, tetapi PreparedStatement tidak menggantikan ruang letak ini dengan betul.
Isunya terletak pada panggilan kaedah executeQuery(). Kod tersebut menimpa pertanyaan yang disediakan dengan pertanyaan asal dengan memanggil s.executeQuery(query) dan bukannya s.executeQuery(). Kaedah executeQuery() tanpa argumentasi hendaklah digunakan untuk melaksanakan pertanyaan yang disediakan.
PreparedStatement s = conn.prepareStatement(query); s.setInt(1, intValue); s.setString(2, strValue); rs = s.executeQuery(); // Correct
Selain itu, kod tersebut mungkin membocorkan sumber disebabkan sambungan, pernyataan dan set hasil yang tidak tertutup. Sumber harus ditutup dalam blok akhirnya untuk mengelakkan keletihan sumber.
try { ... } finally { if (rs != null) rs.close(); if (s != null) s.close(); if (conn != null) conn.close(); }
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Ralat Sintaks MySQL berhampiran '?'' dengan PreparedStatement dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!