我从文本文件中获取域名并将其逐个传递给查询。 第一次查询执行正常..但当它采取第二个域并将其传递给查询获取错误“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-----------");
答案 0 :(得分:2)
如果你在循环中有这个代码,并且你没有清除StringBuilder或使用新的代码,那么第二次,你将有两次SQL语句,这将解释错误。
如果简单的String会这样做,为什么要使用StringBuilder呢?根本没有SQL语句的变化。当然,这可能是一个简化的例子。
另外,如果你在循环中执行此操作,并且每次SQL确实完全相同,那么您可以只准备一次语句,并在循环中重复执行它。这就是准备的语句的用途。