2012-04-09 50 views
0

如何使用jsp执行'conn/as sysdba'。 使用使用jsp执行oracle语句

PreparedStatement stmt = conn.prepareStatement(sql); 

显示值java.sql.SQLException:SQL字符串不是查询?

如何使用jsp来做到这一点?

+0

也许这有助于:http://www.javafaq.nu/java-example-code-134.html – Thilo 2012-04-09 09:07:49

+0

提供完整的错误堆栈跟踪和值的sql变量。 – 2012-04-09 09:55:16

回答

0

conn是一个SQL * Plus命令,不是SQL语句。所以它只能用于SQL * Plus(或者恰好对SQL * Plus命令有一定支持的另一个客户端工具)。你不能通过JDBC使用它。

conn/as sysdba告知SQL * Plus使用操作系统身份验证连接到数据库,因为用户SYS启用了SYSDBA角色。在这种情况下,操作系统身份验证将要求在安装数据库的服务器上调用SQL * Plus,并且用户以操作系统用户“oracle”身份登录。对于JSP页面来说,使用操作系统认证是合适和/或可能的,这似乎极不可能,至少要求运行JSP代码的应用程序服务器安装在同一台服务器上Oracle安装在其上并且它作为Oracle数据库的相同操作系统用户运行。这些都不是特别有可能的。连接到SYS并启用SYSDBA角色的数据库对于JSP页面也是非常奇怪的 - 您希望JSP代码能够以这些类别的特权运行,这一点非常罕见。一般来说,Oracle数据库不允许将连接作为SYS而不是Oracle运行的机器以外的任何连接,因为通常情况下,只有DBA才会使用该帐户登录,然后只执行一小部分实际需要的任务这种高架访问。

应该可以将Oracle配置为接受具有SYSDBA角色的用户SYS的远程连接。应该可以在JSP代码中配置连接字符串,以便为该帐户使用适当的密码。但是想要做到这一点非常罕见,并且会打开如此巨大的安全漏洞,我会严肃地质疑这是否真的是你想要做的。你能解释一下你想解决的问题吗?

0

是的,sql是查询,但您需要resultQuery = stmt.executeQuery()来保存结果。

此外,请查看驱动程序连接,数据库所在机器的名称以及用户名和密码。