青纱帐下魂 2021-06-04 10:22 采纳率: 42.9%
浏览 389
已采纳

SQLSyntaxErrorException: ORA-00900: 无效 SQL 语句

List<String> listsql=new ArrayList<>();

listsql.add("select round((1-busy.value/tol.value)*100,2) from (select sum(count) value from v$waitstat where class in ('data block','segment header','undo header','undo block'))busy, (select value from v$sysstat where name='session logical reads')tol");

listsql.add("select round((1-(physical.value-direct.value-lobs.value)/logical.value)*100,2) from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical where physical.NAME='physical reads' and direct.name='physical reads direct' and lobs.name='physical reads direct (lob)' and logical.NAME='session logical reads'");

listsql.add("select round(sum(pins-reloads)/sum(pins)*100,2) from v$librarycache");

listsql.add("select round((1-hard.value/total.value)*100,2) from v$sysstat hard,v$sysstat total where hard.NAME='parse count (hard)' and total.NAME='parse count (total)'");

listsql.add("select round((1-cpu.value/total.value)*100,2) from v$sysstat cpu,v$sysstat total where cpu.NAME='parse time cpu' and total.NAME='parse time elapsed'");

listsql.add("select round((1-waits.value/redos.value)*100,2) from v$sysstat waits,v$sysstat redos where waits.NAME='redo log space requests' and redos.NAME='redo entries'");

listsql.add("select round((1-disk.value/(disk.value+memory.value))*100,2) from v$sysstat disk,v$sysstat memory where disk.NAME='sorts (disk)' and memory.NAME='sorts (memory)'");

listsql.add("select round((1 - (a.value/b.value))*100,2) from v$sysstat a,v$sysstat b where a.name='parse count (hard)' and b.name='parse count (total)'");

listsql.add("select round((1-sum(misses+immediate_misses)/sum(gets+immediate_gets))*100,2) from v$latch");

listsql.add("select round((1-parse.value/total.value)*100,2) from v$sysstat parse,v$sysstat total where parse.NAME='parse time cpu' and total.NAME='CPU used by this session'");

List<DB_jiemi> list1=HttpClientHelper.send();

List<DB_jiemi> list=new ArrayList<DB_jiemi>();
for (int i = 0; i < list1.size(); i++) {
   if(ip.equals(list1.get(i).getIP()))
      list.add(list1.get(i));
}
Map map = new HashMap<>();
String url="jdbc:oracle:thin:@"+list.get(0).getIP()+":"+list.get(0).getPORT()+":"+list.get(0).getDB_SERVERNAME();
String user=list.get(0).getDB_USER_S();
String password=list.get(0).getDB_PWD_S();
String drive="oracle.jdbc.driver.OracleDriver";
Connection con = dbUtil.getConnection(url,user,password,drive);
for (int i = 0; i < listsql.size(); i++) {
   PreparedStatement pst = con.prepareStatement(String.valueOf(listsql.size()));
   ResultSet rs = pst.executeQuery();
   while(rs.next()) {
      map.put("DBcheck",rs);
   }
   //dbUtil.close(con,pst,rs);
   rs.close();
   pst.close();
}
con.close();
return map;

我要在for循环里一次执行一条sql语句在将查询的结果放入到map中返回给前端,但是现在报java.sql.SQLSyntaxErrorException: ORA-00900: 无效 SQL 语句,sql语句单独执行是没有问题的,代码中加粗的位置,查询和放入map中的方式我有点不清楚是否正确!

 

 

  • 写回答

1条回答 默认 最新

  • 芫尘梦 2021-06-04 10:42
    关注
    PreparedStatement pst = con.prepareStatement(String.valueOf(listsql.size())); 改成
    PreparedStatement pst = con.prepareStatement(listsql.get(i));
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    悬赏问题

    • ¥20 C语言字符串不区分大小写字典排序相关问题
    • ¥15 关于#python#的问题:我希望通过逆向技术爬取1688搜索页下滑加载的数据
    • ¥15 学习C++过程中遇到的问题
    • ¥15 关于Linux的终端里,模拟实现一个带口令保护的屏保程序遇到的输入输出的问题!(语言-c语言)
    • ¥15 学习C++过程中遇到的问题
    • ¥15 请问,这个嵌入式Linux系统怎么分析,crc检验区域在哪
    • ¥15 二分类改为多分类问题
    • ¥15 Unity微信小游戏上调用ReadPixels()方法报错
    • ¥15 如何通过求后验分布求得样本中属于两种物种其中一种的概率?
    • ¥15 q从常量变成sin函数,怎么改写python代码?