首页 > 解决方案 > PreparedStatement,对多个“?”使用一个参数

问题描述

如果不存在查询,我有一个插入,如下所示。

BEGIN
    IF NOT EXISTS (SELECT * FROM tbl_sampleTable WHERE name = ? or subject = ?)
    BEGIN
        INSERT INTO tbl_sampleTable VALUES (?,?)
    END
END

我正在使用 JDBC PreparedStatement 执行上述查询,如下所示

    pst.setString(1, name);
    pst.setString(2, subject);
    pst.setString(3, subject);
    pst.setString(4, name);
    pst.executeUpdate();

我将这些名称和主题作为方法参数,无论如何我可以为多个“?”提供值?具有相同的参数,因为它们是相同的,而不是每次提到它们两次。

编辑:如果相关,我不使用 spring 或任何其他框架。

标签: javajdbcprepared-statement

解决方案


JDBC 不支持命名参数,但是 Spring JDBC 通过NamedParameterJdbcTemplate提供了这个功能


推荐阅读