2012-04-09 45 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()來保存結果。

此外,請查看驅動程序連接,數據庫所在機器的名稱以及用戶名和密碼。