找不到变量

时间:2014-10-12 16:27:29

标签: java variables java-ee

我正在创建一个可以添加,搜索,更新和删除数据的简单系统。我的工作几乎完成,除了更新部分。我尝试了对问题的任何可能的修复,这是我使用的变量。

以下是我使用的代码:

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的新手,所以非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

我认为PreparedStatement是避免此类问题的完美解决方案 试试这个

String sql="UPDATE client SET c_name=?,c_address=?,c_tin=?,c_bln=?,c_ea=?,c_tn=?," +
        " c_fn=?,c_cp=? where acn = ?";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(1, c_name);
statement.setString(2,c_address);
statement.setString(3,c_tin);
statement.setString(4,c_bln);
statement.setString(5,c_ea);
statement.setString(6,c_tn);
statement.setString(7,c_fn);
statement.setString(8,c_cp);
statement.setString(9,acn);
statement.executeUpdate();

答案 1 :(得分:0)

+之后您错过了(c_name)运算符:

    String sql=("UPDATE client SET c_name='" + (c_name) + // This + was missing
                "', 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) + "'");

注意:
OP中的update语句中有一些空格。我没有动过它们,但请注意它们没有任何用处。