Rumah >Java >javaTutorial >Mengapa Saya Mendapat 'Ralat Sintaks MySQL berhampiran '?'' dengan PreparedStatement dalam Java?

Mengapa Saya Mendapat 'Ralat Sintaks MySQL berhampiran '?'' dengan PreparedStatement dalam Java?

Susan Sarandon
Susan Sarandonasal
2024-12-11 15:43:11428semak imbas

Why Am I Getting a

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!

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