java - 在 PreparedStatement 中重用参数?

标签 java sql oracle prepared-statement

我正在像这样将参数传递给 PreparedStatement:

public void getNodes(String runId, File file, Connection conn) {
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
        ps = conn.prepareStatement(Mat.queries.get("NettingNode.QUERY"));

        ps.setString(1, runId);
        ps.setFetchSize(10000);
        rs = ps.executeQuery();

        // etc.
    } catch (Exception e) {
        logger.error(e, e);
    } finally {
        close(rs, ps);
    }
}

查询看起来像这样:

select * from table_1 where run_id = ?

现在我想像这样修改我的查询,并重用第一个参数(? 都将使用 runId 参数):

select * from table_1 where run_id = ?
union
select * from table_2 where run_id = ?

不这样做是否可能:

ps.setString(1, runId);
ps.setString(2, runId);

最佳答案

这不能用普通的 JDBC 来完成。您可以改为使用 Spring 的 JDBCTemplate,它将支持您想要的命名参数,并在语句中需要的任何地方重复使用相同的名称。

参见 Named parameters in JDBC

关于java - 在 PreparedStatement 中重用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30501434/

相关文章:

sql - 将重复记录移动到不同的表

java - 关于可序列化事务的一些疑问?

java - Android studio 不同屏幕尺寸像素

sql - ORA-01735 : invalid ALTER TABLE option (While trying to drop DEFAULT on a COLUMN)

java - 3DES 加密 Oracle/JAVA 等效

sql - 带有空字符串的 DB2 NVL

sql - 用简单的词解释 Merge SQL 语句?

java.sql.SQLException : Closed Connection when blob file downloaded in ie8 browser oracle 10g R2 application server

java - 是否可以扩展@Delegate Activity 注释的DelegateProcessor?

java - 运行第一个 Hadoop(在 unix 上)程序(在 Windows 7 上)