BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #14349同步于 2010/4/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

java调用sql脚本时读取DOS返回值 受阻!!

hjlovess501
2010/4/29镜像同步11 回复
g.sql脚本中写sql代码:show parameter O7_DICTIONARY_ACCESSIBILITY 自己编写java代码调用该脚本,截取DOS返回值输出流,但是只想要最后一行的值,DOS中有没有功能只显示其最后一行值的功能呢?? 我的思路是把输出流中的值先放入ArrayList中,再从ArrayList中读取最后一项值。 但是程序运行后没有输出结果,while循环结果结束后好像程序就挂起了,红色代码部分没有运行啊 具体代码如下: package aa; import java.io.*; import java.util.*; public class mhs { public static void main(String[] args) { ArrayList a1=new ArrayList(); try { int i=0; Process p = Runtime.getRuntime().exec("sqlplus sys/oracle as sysdba @D:\\g.sql"); BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream())); String line = null; while ((line = in.readLine())!= null) { a1.add(line); } i=a1.size(); System.out.println(a1.get(i-1)); in.close(); } catch (IOException e) { e.printStackTrace(); } } } 如果全部显示DOS返回值的话,代码如下,但是请注意,while循环外的System.out.println("为什么这条不显示啊!!");根本没有执行,JAVA输出看不到“为什么这条不显示啊!!”语句~~ 全部显示代码如下: package aa; import java.io.*; public class mhs { public static void main(String[] args) { try { int i=0; Process p = Runtime.getRuntime().exec("sqlplus sys/oracle as sysdba @D:\\g.sql"); BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream())); String line = null; while ((line = in.readLine())!= null) { System.out.println(line); } System.out.println("为什么这条不显示啊!!"); } catch (IOException e) { e.printStackTrace(); } } } 执行结果如下: SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 4月 29 12:10:55 2010 Copyright (c) 1982, 2007, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options O7_DICTIONARY_ACCESSIBILITY boolean FALSE 最后一行正是我想要的一行,其他不要 哪个好心人能指点指点,谢谢哦
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
caomeiliang机器人#1 · 2010/4/29
g.sql文件有问题吧 你写个简单点的。。。
caomeiliang机器人#2 · 2010/4/29
把g.sql贴出来看看那
caomeiliang机器人#3 · 2010/4/29
我估计你没有写"exit"
hjlovess501机器人#4 · 2010/4/29
【 在 caomeiliang 的大作中提到: 】 : 把g.sql贴出来看看那 g.sql中就是只有两行代码: set heading off show parameter O7_DICTIONARY_ACCESSIBILITY 第一行用于设置显示的格式,表示不要标题 第二行用来显示参数O7_DICTIONARY_ACCESSIBILITY的值 既然能显示参数值了,说明这么简单的脚本应该没问题,我觉得还是java代码中 输出的问题,就是不知道错在哪里了
hjlovess501机器人#5 · 2010/4/29
【 在 caomeiliang 的大作中提到: 】 : 我估计你没有写"exit" 怎么写,写在哪里哦
caomeiliang机器人#6 · 2010/4/29
卸载g.sql最后一行试试看
hjlovess501机器人#7 · 2010/4/29
【 在 caomeiliang 的大作中提到: 】 : 卸载g.sql最后一行试试看 ???????? 把它卸载了,我还怎么让它来显示O7_DICTIONARY_ACCESSIBILITY的值啊!! 这个,额,这个是核心的东西
caomeiliang机器人#8 · 2010/4/29
错别字,是“写在”
caomeiliang机器人#9 · 2010/4/29
set heading off show parameter O7_DICTIONARY_ACCESSIBILITY exit 这样写。。。。