com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp phù hợp để sử dụng gần '? hoặc MemberName =? ' ở dòng 1
MySQL không hiểu ý nghĩa của ?
trong truy vấn SQL. Nó thực sự là cú pháp SQL không hợp lệ. Vì vậy, bằng cách nào đó, nó không bị thay thế bởi PreparedStatement
. Và đoán xem?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Bạn đang ghi đè truy vấn đã chuẩn bị bằng truy vấn ban đầu! Bạn cần gọi không đối số PreparedStatement#executeQuery()
thay vì Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Không liên quan đến vấn đề, mã của bạn đang rò rỉ tài nguyên. DB sẽ hết chúng sau vài giờ và ứng dụng của bạn sẽ gặp sự cố. Để khắc phục điều này, bạn cần làm theo thành ngữ JDBC về đóng Connection
, Statement
và ResultSet
trong finally
khối try
chặn nơi chúng được lấy. Xem hướng dẫn cơ bản về JDBC
để biết thêm chi tiết.