返回信息流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
最后一行正是我想要的一行,其他不要
哪个好心人能指点指点,谢谢哦
这是一条镜像帖。来源:北邮人论坛 / java / #14349同步于 2010/4/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java调用sql脚本时读取DOS返回值 受阻!!
hjlovess501
2010/4/29镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 caomeiliang 的大作中提到: 】
: 把g.sql贴出来看看那
g.sql中就是只有两行代码:
set heading off
show parameter O7_DICTIONARY_ACCESSIBILITY
第一行用于设置显示的格式,表示不要标题
第二行用来显示参数O7_DICTIONARY_ACCESSIBILITY的值
既然能显示参数值了,说明这么简单的脚本应该没问题,我觉得还是java代码中
输出的问题,就是不知道错在哪里了
【 在 caomeiliang 的大作中提到: 】
: 卸载g.sql最后一行试试看
????????
把它卸载了,我还怎么让它来显示O7_DICTIONARY_ACCESSIBILITY的值啊!!
这个,额,这个是核心的东西