繁体   English   中英

JDBC PreparedStatement,UNION选择和参数传递

[英]JDBC PreparedStatement, UNION Select and parameter passing

好吧,我知道答案很简单,我会觉得很蠢,但是...

Java JDK 1.7,Sybase JDBC驱动程序

代码嗅探:

String sql = "select <blah> 
    from <blah blah> 
    where date1 = ? 
    UNION 
    select <blah> 
    from <blah blah> 
    where date2 = ?";

Connection conn = ConnectionManager.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);

logger.info("parmemeter count: " + stmt.getParameterMetaData().getParameterCount());

stmt.setDate(1, new java.sql.Date(date.getTime())); 
stmt.setDate(2, new java.sql.Date(date.getTime()));

ResultSet rs = stmt.executeQuery();
while rs.next()) {

    // the rest of the code

    }
  1. 那么为什么参数仅计数1?
  2. 运行该程序会引发错误消息:java.sql.SQLException:参数索引2无效。
  3. 如果我将sql减少为任意一部分,并将setDate()减少为仅1,则效果很好。
  4. 带UNION的SQL在交互式sql会话中运行得很好(当然,请填入日期)

我刚遇到这个问题, 这个线程非常有帮助。 引发错误的不是union子句; 这是您传递的日期。如果您使用to_date()(代码段中不清楚),则需要在查询中传递字符串(而不是日期)。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM