1. select * from tablea ;这句话后面要是有“;”的话就会要错error message: ORA-00911: 无效字符没有“;”的话就会运行成功。是不是java里面会自动把“;”加在每句sql的末尾呢?
2. 我现在有很多sql文件 我想用jdbc连接数据库然后运行每个sql文件里面的sql语句(每个sql文件里面只有一个sql语句,例如select * from tablea ;)奖每一个完整的sql语句付给String数组bb[i]
现在的问题是rset = stmt.executeQuery(bb[i]);会报错,因为sql语句末尾的“;”我只有手动去掉sql文件末尾的“;”运行才能成功 但是sql文件太多 手动也不是办法,各位有什么好的方法来解决“;”这个问题么,谢谢。

解决方案 »

  1.   

    1、不需要加;号,java也不会加,分号不是sql语句的一部分,它只是工具用来确认一个sql语句的结束。
    但是在pl/sql中每句的分号是必须的。2、直接使用java方法substring去掉就行了。
    bb[i] = str.substring(0,bb[i].length()-1);
      

  2.   

    replace(sql_txt,';','')
    --将每条select语句的;替换掉,
    --你也可以使用java的字符串替代函数
      

  3.   

    谢谢您的指点 其实sql文件里的文件比我描述的腰复杂的多,比如有的sql语句是
    BEGIN
    FOR i IN 1..1600 LOOP
    UPDATE rptbody SET comments = 'TBR8'
              WHERE (rptno> 2329638) and (rptno< 2329853)
      and ROWNUM<200;
    COMMIT;
    END LOOP;
     END;
    /
    这种pl sql 所以您这样去掉所有“;”的话plsql就会出错。
    这种plsql要把后面的“/”去掉在java里才能运行成功。