java连接sqlplus_如何从Java中的SQL * Plus以“ SYS”身份连接到...

本文档描述了尝试从Java代码中使用SQL * Plus连接到Oracle数据库,特别是作为SYSDBA用户遇到的问题。代码示例展示了如何配置连接字符串,但遇到了错误,错误信息显示了SQL * Plus的使用帮助,表明连接参数可能不正确。
摘要由CSDN通过智能技术生成

我想从Java中的SQL * Plus作为SYS连接到Oracle.但是我无法连接.

但是我能够以名为SCOTT的用户身份进行连接.我的代码段如下:

public static void test_script () {

String fileName = "@t.sql";

//t.sql contains "show user" command

String sqlPath = "D:\";

String sqlCmd = "sqlplus";

// String arg1 = "scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname)(Port=PORT ID))(CONNECT_DATA=(SID=SID)))";

String arg1 = "sys as sysdba/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname)(Port=PORT ID))(CONNECT_DATA=(SID=SID)))";

//String arg1="/ as sysdba";

String arg2= fileName;

//String arg2="conn /as sysdba";

try {

String line;

ProcessBuilder pb = new ProcessBuilder(sqlCmd, arg1,arg2);

Map env = pb.environment();

env.put("VAR1", arg1);

env.put("VAR2", arg2);

//env.put("VAR3", arg3);

pb.directory(new File(sqlPath));

pb.redirectErrorStream(true);

Process p = pb.start();

BufferedReader bri = new BufferedReader

(new InputStreamReader(p.getInputStream()));

BufferedReader bre = new BufferedReader

(new InputStreamReader(p.getErrorStream()));

while ((line = bri.readLine()) != null) {

System.out.println(line);

}

bri.close();

while ((line = bre.readLine()) != null) {

System.out.println(line);

}

bre.close();

System.out.println("

");

System.out.println("Done.");

}

catch (Exception err) {

err.printStackTrace();

}

}

}

当我尝试运行此代码时,我发现此错误:

SQL*Plus: Release 11.2.0.1.0 Production on Thu Apr 10 11:08:59 2014

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL*Plus: Release 11.2.0.1.0 Production

Copyright (c) 1982, 2010, Oracle. All rights reserved.

Use SQL*Plus to execute SQL, PL/SQL and SQL*Plus statements.

Usage 1: sqlplus -H | -V

-H Displays the SQL*Plus version and the

usage help.

-V Displays the SQL*Plus version.

Usage 2: sqlplus [ [] [{logon | /nolog}] [] ]

...

…以及其余的SQL * Plus“使用情况”信息.

我是提供错误的arg1参数还是通过Java在Oracle中以其他方式作为SYS连接.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值