Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQLSyntaxErrorException dekat ? ketika mencoba menjalankan Pernyataan Siap

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TIME() Contoh – MySQL

  2. Cara menggunakan indeks untuk meningkatkan kinerja kueri MySQL

  3. Kesalahan saat mengganti nama kolom di MySQL

  4. Cara Menggunakan Kata Sandi Asli Dengan MySQL 5.7

  5. Database MySQL Saya Rusak... Apa yang Harus Saya Lakukan Sekarang?