首页 > 解决方案 > 如何使用 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是:列是整数类型,但表达式的类型是字符变化。

这是代码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();

那么,我怎样才能使这项工作?

标签: javasqljdbcsql-update

解决方案


这里有一些建议:

  • 当我看到 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 中的第四个参数,但它是 UPDATE 中的第三个参数。我猜你对列有一些困惑。


推荐阅读