2016-04-05 28 views
1

Java'ya yeni yaşıyorum, veritabanı tablosu sütunlarımı güncellemek istiyorum. ama bu kodu çalıştırırken bu hatayı alıyorum.Mysql veritabanı tablosu güncelleştirmiyor

execom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Sen var senin SQL sözdizimi bir hata; Ben 1 hafta çalıştı hattı 1

de yakın 'Mcgreth' kullanma hakkı sözdizimi için MySQL sunucu sürümü ile uyumlu kılavuzu kontrol edin. ama nerede yanlış olduğunu bile düşünemiyorum. plzz bana yardım eder .. yardım için çok teşekkürler. Bu benim kodum.

public boolean update(File2nd dt) { 

    try {    
     con = (Connection) DriverManager.getConnection(url, username, password);//get the connection 
     String query = "UPDATE file1 SET name='" + dt.getName()+ "',age='" + dt.getAge()+ "',color="+dt.getColor()+ "" 

       + " WHERE name=" + dt.getName(); 

     pst = (com.mysql.jdbc.PreparedStatement) con.prepareStatement(query);    
     pst.executeUpdate(); 
     System.out.println("Updated queries: "); 
     return true; 
     } catch (Exception e) { 
     System.out.println("exe" + e); 
     return false; 
     } finally { 
     try { 
       if (pst != null) { 
       pst.close(); 
       } 
       if (con != null) { 
       con.close(); 
       } 
      } catch (Exception e) { 
      } 
     } 
} 

cevap

3

Renk alanı için tek tırnak işaretlerini ve buradaki yan tümceleri kaçırırsınız.

"UPDATE file1 SET name='" + dt.getName()+ "',age='" + dt.getAge()+ "',color='"+dt.getColor()+ "'" 
+ " WHERE name='" + dt.getName() + "'"; 

Ayrıca, nedenlerden bir sürü için, paramaterized ifadeleri kullanmalıdır: sql enjeksiyon karşı koruma, iyileştirilmiş okunabilirliği ve genellikle daha verimli sorgu yürütme İVTYS'niz tarafından.

"UPDATE file1 SET name=?,age=?,color=? WHERE NAME =?"; 

pst.setString(1, dt.getName()); 
pst.setInt(2, dt.getAge()); 
(etc...) 
+0

Sadece? Yer tutucularıyla PreparedStatement içeren bir yanıt eklemek üzereydim ve beni buna yendin! Sebepler, kolay erişilebilirlik ve SQL enjeksiyon saldırılarına karşı koruma içerir. – NickJ

+0

teşekkür ederim çok teşekkürler NickJ ... işe yaradı .. Ve seçili satırın nasıl jant renginde kaldığını bilmek istiyorum. plz bana bununla yardım et. –