2012-04-11 22 views

Trả lời

33

thử điều này:

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) 
+0

Đó là gì, Groovy? –

+0

Câu hỏi được đặt ra trong java. – CapturedTree

+0

whats the way trong file tomcat server.xml? – sns

3

Nếu bạn đã cố gắng kết nối với cơ sở dữ liệu như sau: connect SYS/<password> bạn đã sử dụng cú pháp không còn hợp lệ (Sau Oracle 9i).

Thay vì cố gắng kết nối như sau:

connect SYS/<password> as SYSDBA or connect SYS/<password> as SYSOPER 
+0

Câu hỏi đặt ra là về kết nối qua Java, mà tôi đoán là JDBC. Các lệnh bạn đưa ra được sử dụng với SQL * Plus, nếu tôi không nhầm. –

7

Mã này hoạt động

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); 
1

Bạn có thể sử dụng một Object 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; 
    } 
} 

Và gọi nó là như thế này:

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

Answers đã ở đó,

bạn đang cố gắng để kết nối như sys nhưng Server cho phép

hoặc sys as sysdba

hoặc

sys as sysoper 

chỉ cần thay đổi tham số người dùng như một trong hai từ trên

user='sys as sysdba' 

hoặc

user='sys as sysoper' 
+0

Cảm ơn đề xuất này có ích – learningloop

0

Nếu bạn muốn kết nối cơ sở dữ liệu của bạn với người dùng khác hơn là "sys" là "SYSDBA", sau đó bạn phải thay đổi trình điều khiển từ "mỏng" thành "oci" để thực hiện kết nối thành công.

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); 
    } 
0

Bạn cần phải đặt SYSDBA với tham số String dùng như

String user="sys as sysdba" 
Các vấn đề liên quan