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
Lepaskan: 2024-12-11 15:43:11
asal
427 orang telah melayarinya

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
Salin selepas log masuk

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

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!

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