【问题标题】:Trouble with SQL querySQL查询的问题
【发布时间】:2019-11-18 09:44:21
【问题描述】:

我是数据库和 sql 的新手,只是想在 Java 中解决所有问题,但我遇到了一些小问题,我试图删除 db 中的一条记录,id 作为方法给出参数,像这样,但它不起作用

@Override
public void removeCustomer(int number) {
    Statement statement = null;
    try {
        statement = connection.createStatement();
        statement.executeUpdate("DELETE FROM Customers WHERE id='number'");
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try{
            if(statement != null) statement.close();
        } catch (SQLException e ) {
            e.printStackTrace();
        }
    }
}

当我在 SQL 查询中编写“... WHERE id='2'”时,它确实有效; 但我希望能够从方法参数中传递数字。 任何人都可以帮忙吗?

【问题讨论】:

标签: java database sqlite jdbc parameter-passing


【解决方案1】:

你可以像这样使用PreparedStatement

try(PreparedStatement stm = connection.createStatement("DELETE FROM Customers WHERE id=?")){
    stm.setInt(1, number);
    stm.executeUpdate();
}
//.. catch and finally 

注意

当我在 SQL 查询中编写“... WHERE id='2'”时,它确实有效;

如果您的 id 是 varchar,您可以使用 setString 而不是 setInt 将字符串传递给语句,但我不建议将字符串用于 id

【讨论】:

  • 不,我的 id 是常规且典型的 int,但它确实适用于 id=2 和 id='2' ->这不是一个错误,而是一个功能 ;)
【解决方案2】:

您可以使用PreparedStatement 来实现这一点,请参见下面的示例:

PreparedStatement statement = null;   

statement = connection.prepareStatement("DELETE FROM Customers WHERE id= ?");
statement.setInt(1, number);
statement.executeUpdate();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多