2017-10-19 6 views
-2

변수를 동적으로 만들기 위해 DriverManager.getConnection 매개 변수에서 변수를 사용할 수 있습니까?Java 연결 변수를 Java 변수로 저장하는 방법

String connstring = null;  
    Connection conn = null; 
    try { 
     conn = DriverManager.getConnection     
       ("jdbc:oracle:thin:@hostname:port:sid","uname","pword");        
       //(connstring); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

그러나 연결 문자열을 아래 코드와 같은 변수에 캡슐화하려고 시도했습니다. "전화가 유효하지 않습니다"라는 메시지가 나타납니다.

String connstring = null;  
    connstring = "\"jdbc:oracle:thin:" + host + ":" + port + ":" + sid + "\"" + "," + "\"" + uname + "\"" + "," + "\"" + pword + "\""; 
    System.out.println(connstring); 
    Connection conn = null; 
    try { 
     conn = DriverManager.getConnection(connstring); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

나는 변수를 출력하고 이것은 첫 번째 접근법 인용 부호와 모두 동일하다.

나는 또한 아래와 같은 다른 접근 방식을 시도했다. 이번에는 "잘못된 Oracle URL 지정됨"이 표시됩니다.

Connection con = null; 

    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     con = DriverManager.getConnection(dbaseurl, dbaseuser, dbasepwrd); 
     //con.setAutoCommit(false); 
    } catch (ClassNotFoundException e) { 
     System.out.println("Oracle JDBC Driver Missing"); 
     e.printStackTrace(); 
     return null; 
    } catch (SQLException e) { 
     System.out.println("Connection could not be obtained."); 
     e.printStackTrace(); 
     return null; 
    } 

10g에 대한 oracle url을 조사해 보았습니다. 다음은 dbaseurl 변수를 초기화하는 방법입니다. 목표는 연결 속성을 하드 코딩하지 않는 것입니다. 도와주세요. 감사.

"JDBC : 신탁 : 얇은 @ 호스트 이름 : 포트"

답변

2

당신이 보인다는 ", 문자를 포함하여 이전 코드에서 문자열을 만들었합니다.

+0

확인. 이를 기반으로 연결 문자열을 변수에 넣은 다음 get 연결에서 호출하면 실행 가능하지 않습니다. 그러나이 방법을 시도했지만 여전히 작동하지 않습니다. – user3286012

+0

conn = DriverManager.getConnection \t \t \t \t ("jdbc : oracle : thin"\ "host +": "+ port +": "+ sid + – user3286012

+0

이 값을 a, b, c ...로 설정하면 값이 다음과 같이 설정됩니다. ","+ ","+ " jdbc : oracle : thin : "a : b : c", "d", "e"'. 즉,'''및', '문자가 포함되어 있습니다. 연결 문자열에 있어서는 안됩니다. – user1675642

0

아마도 약간의 힌트가 필요합니다. 그러나 이것은 효과가있었습니다. 하나의 문자열 대신에. 각 변수를 변수에 저장했습니다.

String dburl = "jdbc:oracle:thin:" + host + ":" + port + ":" + sid; 
    System.out.println(dburl); 

    Connection conn = null; 
    try { 
     conn = DriverManager.getConnection 
       //("\"jdbc:oracle:thin:\"" + host + ":" + port + ":" + sid + "\"" + ",\"" + uname + "\"," + "\"" + pword + "\""); 

       (dburl,uname,pword); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }