2012-04-26 51 views
0

我從文本文件中取出域並將它們逐個傳遞給查詢。 首次執行查詢時很好..但是當它需要第二個域並通過它來查詢得到錯誤「ORA-00933:SQL命令不能正確地結束」 下面是代碼ORA-00933:SQL命令未正確結束:java

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-----------"); 

回答

2

如果您讓這段代碼在一個循環中,並且不清除StringBuilder或使用新的代碼,然後再次執行SQL語句,這將解釋錯誤。

爲什麼如果一個簡單的String會使用StringBuilder呢? SQL語句根本沒有變化。當然,這可能是一個簡單的例子。另外,如果你在循環中這樣做,並且SQL每次都是完全相同的,那麼你可以只准備一次語句,然後在循環中重複執行它。這就是準備的聲明的用途。

+0

非常感謝你..我已經把sql放在循環外了,並且在循環中反覆執行它的工作......謝謝你。但我寫的數據檢索到一個xls文件和它的寫作兩次...檢查一個... – Cindrella 2012-04-26 08:19:09

+0

嘿數據正確寫入xls文件...再次感謝您的答案很多..... – Cindrella 2012-04-26 08:25:15

相關問題