MySQLSyntaxErrorException near "?": Menyelesaikan Ralat Sintaks dengan PreparedStatements
Melaksanakan PreparedStatements dalam Java yang kadangkala boleh menghadapi ralat sintaks, salah satunya ditakuti "berhampiran '?'" pengecualian. Untuk memahami punca dan penyelesaiannya, mari kita mendalami isu tersebut.
Perihalan Masalah
Percubaan untuk melaksanakan PreparedStatement hasil dalam MySQLSyntaxErrorException dengan kod ralat 1064, menunjukkan sintaks ralat. Penggantian nilai dalam pertanyaan menggunakan penyemak imbas pertanyaan MySQL berjaya, menunjukkan bahawa isu itu terletak dalam kod.
Berkaitan Kod
String query = "select MemberID, MemberName from members where MemberID = ? or MemberName = ?"; Connection conn = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); PreparedStatement s = conn.prepareStatement(query); s.setInt(1, 2); s.setString(2, "zen"); ResultSet rs = s.executeQuery(query); // Error
Pengecualian
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? or MemberName = ?' at line 1
Penyelesaian
Punca ralat ini ialah MySQL menemui "?" yang belum diproses dalam pertanyaan SQL. Untuk menyelesaikannya, ikuti langkah berikut:
ResultSet rs = s.executeQuery();
Tambahan Pertimbangan
Atas ialah kandungan terperinci Mengapakah `s.executeQuery(query)` Menyebabkan MySQLSyntaxErrorException 'berhampiran '?''?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!