Java sql update错误:数据类型不匹配

时间:2012-06-03 05:41:20

标签: java sql netbeans

我已经在ms访问中创建了一个表。我已在MS-access中将ID的数据类型设置为自动编号。在java中我尝试更新记录。 netBeans IDE给出了“条件表达式中数据类型不匹配”的错误。 但是,当我更改了表中没有的ID号时,它运行良好。代码如下。

String sql = "Update table1 set price ='" + txtPrice.getText() + "', quantity='" + txtQuantity.getText() + "', description='" + txtDescription.getText() + "' where id= " + txtid.getText() + "";
        try {
             pst = conn.prepareStatement(sql);
            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Updated");
            UpdateJTable();
        } catch (Exception e) {

            JOptionPane.showMessageDialog(null, e);
        }

4 个答案:

答案 0 :(得分:1)

我认为你也可能会混淆常规的Statement和PreparedStatement对象。 PreparedStatement让您有机会使用占位符(您可能会在很多sql语句中看到)并让PreparedStatement为您做更多的工作。

尝试编写你的sql语句:

update table1 set price = ?, quantity = ?, description = ? where id = ?

然后使用PreparedStatement对象,您可以:

pStmt.setInteger(1, Integer.valueOf(txtPrice.getText())
每个参数

。我直接使用PreparedStatement已经有几年了,但是如果内存服务,参数是从1开始的。

但你的基本问题是铸造。它还可以使您的代码更清晰(更安全),为此使用PreparedStatement。

答案 1 :(得分:0)

我假设pricequantity列是整数,因此您不需要引用它们。

尝试以下sql:

String sql = "Update table1 set price =" + txtPrice.getText() + ",
              quantity=" + txtQuantity.getText() + ", description='" +
              txtDescription.getText() + "' where id= " + txtid.getText() + "";

请注意,价格和数量中缺少单引号

答案 2 :(得分:0)

首先尝试在id字段中使用类型转换。像:

int id = Integer.parseInt(txtid.getText());

然后执行查询:

String sql = "Update table1 set price ='" + txtPrice.getText() + "', quantity='" +
              txtQuantity.getText() + "', description='" + txtDescription.getText() + "' 
              where id= " + id + "";

答案 3 :(得分:0)

对于您获得的参数太少 - 请仔细检查查询中的字段名称。