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 楼答案
以下是一些建议:
当我看到Swing和数据库代码混合在一起时,情况就不好了。将它们严格分开。你的应用程序应该分层构建
我不会坚持年龄,因为它每天都在变化。我会坚持过生日,并在需要时计算年龄
你不能说是哪条语句给了你错误。我想它就在这里:
变量
cad_apeli
是INSERT中的第四个参数,但它是更新中的第三个参数。我猜你对专栏有些困惑