【发布时间】:2023-04-09 13:24:01
【问题描述】:
查询代码及查询:
ps = conn.prepareStatement("select instance_id, ? from eam_measurement where resource_id in (select RESOURCE_ID from eam_res_grp_res_map where resource_group_id = ?) and DSN like '?' order by 2");
ps.setString(1,"SUBSTR(DSN,27,16)");
ps.setInt(2,defaultWasGroup);
ps.setString(3,"%Module=jvmRuntimeModule:freeMemory%");
rs = ps.executeQuery();
while (rs.next()) { bla blah blah blah ...
返回一个空的ResultSet。
通过基本调试,我发现它的第三个绑定是问题,即
DSN like '?'
我尝试了各种变体,其中最明智的似乎是使用:
DSN like concat('%',?,'%')
但这不起作用,因为我错过了连接字符串两侧的',所以我尝试:
DSN like ' concat('%',Module=P_STAG_JDBC01:poolSize,'%') ' order by 2
但我似乎无法找到让他们参与其中的方法。
我错过了什么?
【问题讨论】:
-
在 JSP 文件中而不是在真正的 Java 类中编写 Java 代码(您应该已经这样做了)并且遇到特定 Java 代码的问题不会成功一个 JSP 问题。在真正的 Java 类中这样做时,您将面临完全相同的问题。所以我删除了
[jsp]标签,因为这无关紧要。 -
确实它不是特定于 JSP 的,但是根据我读过的大多数书籍,在 servlet 中使用这样的代码并没有什么错误,尤其是当它超级简单的时候少于 40 行代码的报告页面,其中应用程序架构有点矫枉过正:) 但我很欣赏你的观点!