code

JDBC를 사용하여 Oracle 데이터베이스에 연결하기 위한 URL 문자열 형식

starcafe 2023. 2. 12. 18:03
반응형

JDBC를 사용하여 Oracle 데이터베이스에 연결하기 위한 URL 문자열 형식

자바 관련 웹 개발은 처음이라 JDBC가 작동하면 간단한 프로그램을 얻을 수 없을 것 같습니다.저는 기성 Oracle 10g XE와 EEclipse EE IDE를 사용하고 있습니다.지금까지 제가 확인한 책과 웹페이지에서는 데이터베이스 URL이 잘못 작성되었거나 JAR 파일이 누락된 것으로 문제를 좁혔습니다.다음의 에러가 표시됩니다.

java.sql.SQLException:jdbc://127.0.0.1:8080에 적합한 드라이버를 찾을 수 없습니다.

다음 코드를 사용합니다.

import java.sql.*;

public class DatabaseTestOne {
    public static void main(String[] args) {
        String url = "jdbc:oracle://127.0.0.1:8080";
        String username = "HR";
        String password = "samplepass";

        String sql = "SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE LAST_NAME='King'";
        Connection connection;
        try {
            connection = DriverManager.getConnection(url, username, password);
            Statement statement = connection.createStatement();
            System.out.println(statement.execute(sql));
            connection.close();
        } catch (SQLException e) {
            System.err.println(e);
        }
    }
}

데이터베이스 URL의 적절한 형식은 무엇입니까?많이 언급되고 있는데 묘사를 못 찾겠어요.

편집(해상도):

더피모의 대답에 따르면ojdbc14.jarOracle 다운로드 사이트에서 이클립스 프로젝트의 참조 라이브러리에 삭제했습니다.그리고 코드 시작을

...
// jdbc:oracle:thin:@<hostname>:<port>:<sid>
String url = "jdbc:oracle:thin:@GalacticAC:1521:xe";
...

그리고 그것은 성공하였다.

이 설정에는 2가지 방법이 있습니다.SID가 있는 경우 다음(이전) 형식을 사용합니다.

jdbc:oracle:thin:@[HOST][:PORT]:SID

Oracle 서비스 이름이 있는 경우 다음(새로 만들기) 형식을 사용합니다.

jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

출처: 이 OraFAQ 페이지

에의 콜은 올바릅니다.

말한 처럼 "duffymo"를 포함하여 합니다.ojdbc6.jar자바어

여기 보세요.

URL이 잘못되어 있습니다.다음과 같이 표시됩니다.

url="jdbc:oracle:thin:@localhost:1521:orcl"

드라이버 클래스도 등록하지 않습니다.신드라이버 JAR을 다운로드하여 CLASSPATH에 삽입하고 코드를 이와 같이 만듭니다.

업데이트: "ojdbc14.jar"의 "14"는 JDK 1.4를 나타냅니다.드라이버 버전을 실행 중인 JDK와 일치시켜야 합니다.아마 JDK 5, 6번일 거예요.

url 의 올바른 형식은, 다음의 몇개의 형식입니다.

jdbc:oracle:thin:@<hostName>:<portNumber>:<sid>;  (if you have sid)
jdbc:oracle:thin:@//<hostName>:<portNumber>/serviceName; (if you have oracle service name)

그리고 거기에 공간을 두지 마세요.포트 번호로서 1521 을 사용해 보겠습니다.sid(가칭)는 환경 변수(윈도우를 사용하는 경우)에 있는 것과 같아야 합니다.

10g oracle 10g expree Edition oracle 10g expree Edition:
에는 1. 로딩 클래스 사용DriverManager.registerDriver (new oracle.jdbc.OracleDriver());하려면 2. 데이터베이스 접속용Connection conn = DriverManager.getConnection("jdbc:oracle:thin:username/password@localhost:1521:xe");

Oracle에서 허용하는 유효한 지원 JDBC URL은 다음과 같습니다.

Oracle JDBC)를 합니다.oracle.jdbc.pool.OracleDataSource

String url = "jdbc:oracle:thin:@tcp://my-host:1522/my-service";
OracleDataSource ods = new OracleDataSource();
ods.setUser(userName);
ods.setPassword(password);
ods.setURL(url);
Connection con = ods.getConnection();

오라클 JDBC 드라이버는 다음 URL 형식을 지원합니다.

  • EZConnect 포맷

    19c부터는 URL 끝에 연결 속성을 추가할 수 있습니다.이 구문은 연결 속성의 시작을 나타내며 각 속성 간의 구분자로 "&"를 사용합니다.

    구문:

    jdbc:oracle:thin:@[[protocol:]//]host1[,host2,host3][:port1][,host4:port2] [/service_name][:server_mode][/instance_name][?connection properties]

    예:

    • jdbc: 라이선스: Thin:@mydbhost:1521/mydbservice
    • jdbc:syslog:thin:@syslog://mydbhost:1521/mydbservice
    • jdbc:syslog:thin:@syslog://mydbhost1,mydbhost2:1521/mydbservice
    • jdbc:syslog:thin:@syslog://mydbhost1:5521, mydbhost2:1521/mydbservice
    • jdbc:syslog:thin:@syslog://mydbhost1:5521/mydbservice:개요
    • jdbc:oracle:thin:@mydbhost1:5521/mydbservice?oracle.net.httpsProxyHost=myproxy&oracle.net.httpsProxyPort=80
    • jdbc:sys:thin:@tcps://mydbhost1:5521/mydbservice?mydbservice_location=/work/mydbost
    • jdbc:oracle:thin:@tcps://mydbhost1:5521/mydbservice?wallet_location=/work/wallet&ssl_server_cert_dn="서버 DN"
  • TNS URL 형식

    이 형식은 연결 옵션을 지정하는 보다 구조화된 방법으로 보다 자세히 설명합니다.

    구문:

    jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=<protocol>) (HOST=<dbhost>)(PORT=<dbport>)) (CONNECT_DATA=(SERVICE_NAME=<service-name>))

    예:

    • jdbc:oracle:thin:@(DESCRICTION=(PROTOCOL=(PROTOCL=RESS)(HOST=mydbhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=mydbservice))
    • jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=RESS)(HORT=1521)(ADDRESS=HOST=HOST2)(PORT=5221)(DATA))
    • jdbc:oracle:thin:@(DESCRICTION=(PROTOCOL=TCPS)(PORT=1522)(HOST=myhost)(CONNECT_DATA=(SERVICE_NAME=dbservicename)(SECURITY=(ssl_server_cert_dn="))CN=testcert.test.com, O=sublic, L=something,ST=state,C=US")
  • TNS 에일리어스 포맷

    tnsnames.ora로 설정된 에일리어스를 사용하려면 다음 형식을 사용합니다.tnsnames.ora 파일의 위치는 TNS_ADMIN 파라미터를 사용하여 설정할 수 있습니다.

    구문:

    jdbc:oracle:thin:@<alias_name>

    예:

    • jdbc:oracle:thin:@prod_db?TNS_ADMIN=/work/tns/
    • jdbc:oracle:thin:@inst1?TNS_ADMIN=/work/tns/
String host = <host name>
String port = <port>
String service = <service name>
String dbName = <db schema>+"."+service
String url = "jdbc:oracle:thin:@"+host+":"+"port"+"/"+dbName
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());         
connection = DriverManager.getConnection("jdbc:oracle:thin:@machinename:portnum:schemaname","userid","password");

저는 자바 개발자가 아니기 때문에 유감스럽게도 당신의 코드에 직접 코멘트를 할 수 없습니다만, 접속 문자열의 형태에 관한 Oracle FAQ에서 이것을 발견했습니다.

jdbc:oracle:<drivertype>:<username/password>@<database>

Oracle JDBC FAQ에서 확인

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#05_03

도움이 되었으면 좋겠다

언급URL : https://stackoverflow.com/questions/1054105/url-string-format-for-connecting-to-oracle-database-with-jdbc

반응형