Я создаю простую систему, которая может добавлять, искать, обновлять и удалять данные. Моя работа почти завершена, за исключением части обновления. Я пробовал любые возможные исправления проблемы, которая является переменной, которую я использовал.Не удается найти переменную
Вот код, который я использовал:
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con= (Connection)
DriverManager.getConnection("jdbc:mysql://localhost:3306/tvatpms","root","");
Statement stmte=con.createStatement();
String acn = jTextField3.getText();
String c_name = jTextField10.getText();
String c_address=jTextField4.getText();
String c_tin=jTextField5.getText();
String c_bln=jTextField6.getText();
String c_ea=jTextField7.getText();
String c_tn=jTextField8.getText();
String c_fn=jTextField9.getText();
String c_cp=jTextField2.getText();
String sql=("UPDATE client SET c_name='" + (c_name) "', c_address='" + (c_address)+ "', c_tin='" + (c_tin)+ "', c_bln='" + (c_bln)+ "', c_ea='" + (c_ea)+ "', c_tn='" + (c_tn)+ "', c_fn='" + (c_fn)+ "', c_cp='" + (c_cp)+"' where acn = '" + (acn) + "'");
stmte.executeUpdate(sql);
jTextField10.setText("");
jTextField4.setText("");
jTextField5.setText("");
jTextField6.setText("");
jTextField7.setText("");
jTextField8.setText("");
jTextField9.setText("");
jTextField2.setText("");
JOptionPane.showMessageDialog(null,"DATABASE UPDATED");
}
catch(Exception e) {
JOptionPane.showMessageDialog(null,"Database not updated!","Error",JOptionPane.ERROR_MESSAGE);
// Logger.getLogger(log.class.getName()).log(Level.SEVERE, null, ex);
}
Проблема является строка SQL часть. В нем говорится, что программа не может найти переменную c_name, которая была объявлена выше. Кто-нибудь может мне помочь? Я все еще новичок в использовании Java, поэтому помощь будет очень оценена.
Покажите нам точное сообщение об ошибке. Один в вашем названии, а другой в вашем теле вопроса различен. –
У вас есть уязвимость в SQL-инъекции. – SLaks
Вам не хватает знака '+' после '(c_name)'? – khelwood