0

我从文本文件中获取域并将其一一传递给查询。第一次查询执行良好..但是当它使用第二个域并将其传递给查询时出现错误“ORA-00933:SQL 命令未正确结束”下面是代码

sql.append("select person_org_id,profile_type_id as NEXUS, profile_option_id,profile_option_value  from TABLE1 ");
            sql.append(" where profile_type_id=1 and person_org_id in (select person_org_id from TABLE2 where ");
            sql.append(" account_id in (select account_id from TABLE3 where prod_id=10001 and prod_inst_name = ?)) ");

            ps = con.prepareStatement(sql.toString());
            System.out.println("----------checkpoint -----------");

            ps.setString(1,domain_name);
            System.out.println("----------checkpoint 4-----------");
            rs= ps.executeQuery();
            System.out.println("----------checkpoint 5-----------");
4

1 回答 1

2

如果您在循环中有此代码,并且您没有清除 StringBuilder 或使用新的,那么第二次,您将有两次 SQL 语句,这将解释错误。

如果一个简单的 String 可以,为什么还要使用 StringBuilder 呢?SQL 语句完全没有变化。当然,这可能是一个简化的例子。

此外,如果您在循环中执行此操作,并且每次 SQL 确实完全相同,您可以只准备一次语句,然后在循环中重复执行它。这就是准备好的语句的用途。

于 2012-04-26T08:09:56.030 回答