ORA-00933:SQL命令未正确结束:java

时间:2012-04-26 08:06:28

标签: java jdbc ora-00933

我从文本文件中获取域名并将其逐个传递给查询。 第一次查询执行正常..但当它采取第二个域并将其传递给查询获取错误“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-----------");

1 个答案:

答案 0 :(得分:2)

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

如果简单的String会这样做,为什么要使用StringBuilder呢?根本没有SQL语句的变化。当然,这可能是一个简化的例子。

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