如何在Java中将SYS连接到Oracle?

我收到此错误:

java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 

怎么修? (我需要是SYS )。 谢谢。

尝试这个 :

 import java.sql as jsql import java.lang as lang driver, url, user, passwd = ( "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@localhost:1234:xxx1", "sys as sysdba", "xxx1") lang.Class.forName(driver) c = jsql.DriverManager.getConnection(url,user,passwd) 

这段代码有效

 String driverName = "oracle.jdbc.driver.OracleDriver"; Class.forName(driverName).newInstance(); String nameForConnect = "sys as sysdba"; String pass = "password"; String url = "jdbc:oracle:thin:@192.168.0.1:1521:ORCL"; Connection conn = DriverManager.getConnection(url, nameForConnect, pass); 

答案已经存在,

您尝试连接为sys但服务器允许

sys as sysdba

要么

 sys as sysoper 

只需将用户参数更改为上面的任何一个

 user='sys as sysdba' 

要么

 user='sys as sysoper' 

如果您尝试连接到数据库,请执行以下操作: connect SYS/您使用的语法不再有效(在Oracle 9i之后)。

而是尝试连接如下:

 connect SYS/ as SYSDBA or connect SYS/ as SYSOPER 

你能使用OracleDataSource对象吗?

 public class Database { static OracleDataSource ods; public static Connection openConnection(String URL, String user, String password, String option) throws SQLException { Connection conn = null; Properties properties = new Properties(); properties.put("user", user); properties.put("password", password); ods = new OracleDataSource(); ods.setURL(URL); if(option != null) { properties.put("internal_logon", option); } ods.setConnectionProperties(properties); conn = ods.getConnection(); return conn; } } 

并称之为:

 Connection con = null; con = Database.openConnection("YourJDBCConnectionURL", "YourSYSUser", "YourSYSPassword", "sysdba"); 

如果要将数据库与“sys”以外的用户连接为“sysdba”,则必须将驱动程序从“thin”更改为“oci”以成功连接。

 try { Class.forName("oracle.jdbc.driver.OracleDriver"); String DB_URL="jdbc:oracle:oci:@localhost:1521:orcl"; OracleDataSource ds1=new OracleDataSource(); Properties prop1 = new Properties(); prop1.setProperty("user","ravi"); prop1.setProperty("password","******"); prop1.setProperty("internal_logon","sysdba"); ds1.setConnectionProperties(prop1); ds1.setURL(DB_URL); OracleConnection conn1 = (OracleConnection)ds1.getConnection(); Statement stmt = conn1.createStatement(); ResultSet rs = stmt.executeQuery("select * from dba_users"); while (rs.next()) System.out.println(rs.getString(1)); conn1.close(); } catch (Exception e) { System.out.println(e); } 

你需要把sysdba和用户字符串参数放在一起

 String user="sys as sysdba"