com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat '? atau MemberName =?' di baris 1
MySQL tidak mengerti arti dari ?
dalam kueri SQL. Ini memang sintaks SQL yang tidak valid. Jadi entah bagaimana itu tidak digantikan oleh PreparedStatement
. Dan coba tebak?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Anda mengganti kueri yang disiapkan dengan kueri asli! Anda perlu memanggil PreparedStatement#executeQuery()
metode alih-alih Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Tidak terkait dengan masalah, kode Anda membocorkan sumber daya. DB akan habis setelah beberapa jam dan aplikasi Anda akan macet. Untuk memperbaikinya, Anda harus mengikuti idiom JDBC untuk menutup Connection
, Statement
dan ResultSet
di finally
blok try
blok di mana mereka diakuisisi. Lihat tutorial dasar JDBC
untuk lebih detail.