首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中通过sqlplus在命令行中执行sql

在java中通过sqlplus在命令行中执行sql
EN

Stack Overflow用户
提问于 2014-04-14 19:55:50
回答 1查看 8.4K关注 0票数 2

我必须在JAVA中通过sqlplus执行sql语句,而不是像在SQLPLUS中在命令行中那样使用文件。在Java中,我需要建立连接并在同一行中执行sql语句

代码语言:javascript
复制
echo "show user;" | sqlplus USERNAME/PASSWORD as sysdba

我需要找到它的连接字符串。如何在Java中做同样的事情??

欢迎每一个建议。

EN

回答 1

Stack Overflow用户

发布于 2014-04-14 21:47:59

有一篇here文章描述了调用Runtime.getRuntime().exec()的更好方法

链接的示例可能有点过时了,但它仍然有效。

以下代码基于this

代码语言:javascript
复制
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访问权限,所以我尝试了:

代码语言:javascript
复制
java doscmd "@echo show user; | sqlplus -L USERNAME/PASSWORD@DATABASE"

而且它起作用了。

您应该能够执行以下操作:

代码语言:javascript
复制
java doscmd "@echo show user; | sqlplus -L USERNAME/PASSWORD@DATABASE as sysdba"

我得到了

代码语言:javascript
复制
ERROR:
ORA-01031: insufficient privileges

这让我相信它也会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23059459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档