java - SQL 查询有问题

标签 java database sqlite jdbc parameter-passing

我是数据库和 sql 方面的新手,只是想用 Java 解决所有问题,但我遇到了一些小问题,我正在尝试删除数据库中的一条记录,其 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'”时; 但我希望能够从方法参数传递数字。 有人可以帮忙吗?

最佳答案

您可以使用 PreparedStatement像这样:

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

注意

It does work, when I write in SQL query " ... WHERE id='2'";

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

关于java - SQL 查询有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58911722/

相关文章:

Java JTextPane 向 JScrollPane 添加空白区域

PhpMyAdmin;我应该禁用 root 登录吗?

mysql - Union在mysql中与group by一起使用时不起作用?怎么了?

SQL 更新查询中的 Python 变量

php - SQLite 一般错误 : 17 database schema has changed 的原因

java自动发送邮件

java - 无法使 Guava base64 编码/解码工作

java - Jooq嵌套选择

php - SQL命令从数据ID在两个表中的表中删除

sqlite - 我能否实现对内存中 SQLite 数据库的可扩展多线程访问