有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用JDBC更新整数?

我试图更新一个表,试图输入一个integer(年龄)

首先,我在insert上遇到了同样的问题,在这里给出了一些答案之后,我可以正常工作,但是,在update命令上使用相同的解决方案是行不通的

以下是insert的解决方案:

PreparedStatement pst = conecta.conn.prepareStatement("INSERT INTO cad_pessoa(cad_cpf,cad_nome, cad_idade, cad_apelido, cad_data) values (?,?,?,?,?)");

pst.setString(1, jFormattedTextFieldCPF.getText()); //pega o texto insirido e armazena no banco de dados
pst.setString(2, jTextFieldNOME.getText()); //pega o texto insirido e armazena no banco de dados
int n1 = Integer.parseInt(jTextFieldIDADE.getText());
pst.setInt(3, n1); //pega o texto insirido e armazena no banco de dados
pst.setString(4, jTextFieldAPELIDO.getText());//pega o texto insirido e armazena no banco de dados
SimpleDateFormat formatter  = new SimpleDateFormat ("dd-MM-yyyy");
java.util.Date utilDate = null;

try {
    utilDate = formatter.parse(jFormattedTextFieldDATA.getText());
} catch (ParseException ex) {
    Logger.getLogger(Pessoa3.class.getName()).log(Level.SEVERE, null, ex);
}
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
pst.setDate(5, sqlDate);
pst.executeUpdate();

update的问题是:列的类型为Integer,但表达式的类型为character Variable

以下是update的代码:

PreparedStatement pst = conecta.conn.prepareStatement("update cad_pessoa set cad_nome= ?, cad_idade=?, cad_apelido= ? where cad_cpf= ?");

pst.setString(1, jTextFieldNOME.getText()); //pega o texto insirido e armazena no banco de dados
pst.setString(2, jTextFieldIDADE.getText()); //pega o texto insirido e armazena no banco de dados
int n1 = Integer.parseInt(jTextFieldIDADE.getText()); //string to int
pst.setInt(3, n1); //pega o texto insirido e armazena no banco de dados
pst.setString(4, jFormattedTextFieldCPF.getText()); //pega o texto insirido e armazena no banco de dados

pst.executeUpdate(); //executa o SQL
pst.execute();

那么,我怎样才能让这一切顺利进行呢


共 (1) 个答案

  1. # 1 楼答案

    以下是一些建议:

    • 当我看到Swing和数据库代码混合在一起时,情况就不好了。将它们严格分开。你的应用程序应该分层构建

    • 我不会坚持年龄,因为它每天都在变化。我会坚持过生日,并在需要时计算年龄

    • 你不能说是哪条语句给了你错误。我想它就在这里:

       int n1 = Integer.parseInt(jTextFieldIDADE.getText()); //string to int
       pst.setInt(3, n1); //pega o texto insirido e armazena no banco de dados
      

    变量cad_apeli是INSERT中的第四个参数,但它是更新中的第三个参数。我猜你对专栏有些困惑