【发布时间】:2013-09-05 20:31:30
【问题描述】:
我有一个问题
SELECT instance_guid FROM service_instances WHERE service_template_guid='E578F99360A86E4EE043C28DE50A1D84' AND service_family_name='TEST'
直接执行返回我
4FEFDE7671A760A8DC8FC63CFBFC8316
F2F9DF641D8E2CACC03175A7A628D51D
现在我正在尝试来自 JDBC 的相同代码。
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = executionContext.getConnection();
if (conn != null) {
ps = (PreparedStatement)conn.prepareStatement(query);
if (params == null) params = new Object[0];
for (int i=0;i<params.length;i++) {
if (params[i] instanceof Integer) {
ps.setInt(i+1, ((Integer)params[i]).intValue());
} else if (params[i] instanceof java.util.Date) {
((PreparedStatement)ps).setDATE(i+1, new oracle.sql.DATE((new java.sql.Timestamp(((Date)params[i]).getTime()))));
//ps.setObject(i+1, new oracle.sql.DATE(new Time(((Date)params[i]).getTime())));
} else {
if (params[i] == null) params[i] = "";
ps.setString(i+1, params[i].toString());
}
}
rs = ps.executeQuery();
我看到params[0] =E578F99360A86E4EE043C28DE50A1D84 and params[1]=TEST
但是resultSet是空的,没有得到结果。我调试了但没有太大帮助?
你能告诉我我尝试对了吗?
在java中定义如下
final static private String INSTANCE_GUID_BY_TEMPLATE_GUID =
"SELECT instance_guid FROM service_instances WHERE service_template_guid=? AND service_family_name=? "
SERVICE_FAMILY_NAME NOT NULL VARCHAR2(256)
SERVICE_TEMPLATE_GUID NOT NULL RAW(16 BYTE)
【问题讨论】:
-
假设
query字符串确实有正确的sql语句。 -
查询字符串具有相同的语句。我正在尝试在 db 中替换参数的相同语句
-
请向我们展示在 Java 中定义的查询字符串。
-
@constantlearner
SERVICE_TEMPLATE_GUID是RAW类型并且有RAW数据类型设置方法吗? -
@Polppan 如果 OP 使用 setRAW/getRAW,他将绑定到 oracle JDBC 驱动程序。我在下面的帖子解决了这个问题。