我必须在JAVA中通过sqlplus执行sql语句,而不是像在SQLPLUS中在命令行中那样使用文件。在Java中,我需要建立连接并在同一行中执行sql语句
echo "show user;" | sqlplus USERNAME/PASSWORD as sysdba我需要找到它的连接字符串。如何在Java中做同样的事情??
欢迎每一个建议。
发布于 2014-04-14 21:47:59
有一篇here文章描述了调用Runtime.getRuntime().exec()的更好方法
链接的示例可能有点过时了,但它仍然有效。
以下代码基于this
import java.io.*;
public class doscmd
{
public static void main(String args[])
{
try
{
String[] cmd = new String[3];
cmd[0] = "cmd.exe" ;
cmd[1] = "/C" ;
cmd[2] = args[0];
Process p=Runtime.getRuntime().exec(cmd);
BufferedReader reader=new BufferedReader(
new InputStreamReader(p.getInputStream())
);
BufferedReader error=new BufferedReader(
new InputStreamReader(p.getErrorStream())
);
String line;
while((line = reader.readLine()) != null)
{
System.out.println(line);
}
String errLine;
while((errLine = error.readLine()) != null)
{
System.out.println(errLine);
}
}
catch(IOException e1) {e1.printStackTrace();}
System.out.println("Done");
}
}因为我没有sysdba访问权限,所以我尝试了:
java doscmd "@echo show user; | sqlplus -L USERNAME/PASSWORD@DATABASE"而且它起作用了。
您应该能够执行以下操作:
java doscmd "@echo show user; | sqlplus -L USERNAME/PASSWORD@DATABASE as sysdba"我得到了
ERROR:
ORA-01031: insufficient privileges这让我相信它也会起作用。
https://stackoverflow.com/questions/23059459
复制相似问题