JDBC-데이터베이스 연결

적절한 드라이버를 설치했으면 이제 JDBC를 사용하여 데이터베이스 연결을 설정할 차례입니다.

JDBC 연결을 설정하는 데 관련된 프로그래밍은 매우 간단합니다. 다음은 간단한 네 단계입니다.

  • Import JDBC Packages: 더하다 import 명령문을 Java 프로그램에 추가하여 Java 코드에서 필수 클래스를 가져옵니다.

  • Register JDBC Driver: 이 단계는 JVM이 원하는 드라이버 구현을 메모리에로드하여 JDBC 요청을 수행 할 수 있도록합니다.

  • Database URL Formulation: 이것은 연결하려는 데이터베이스를 가리키는 적절한 형식의 주소를 만드는 것입니다.

  • Create Connection Object:마지막으로 DriverManager 객체의 getConnection () 메서드에 대한 호출을 코딩하여 실제 데이터베이스 연결을 설정합니다.

JDBC 패키지 가져 오기

그만큼 Import 명령문은 코드에서 참조하는 클래스를 찾을 수있는 위치를 Java 컴파일러에 알려주고 소스 코드의 맨 처음에 배치됩니다.

SQL 테이블에서 데이터를 선택, 삽입, 업데이트 및 삭제할 수있는 표준 JDBC 패키지를 사용하려면 다음 가져 오기 를 소스 코드에 추가하십시오.

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support

JDBC 드라이버 등록

사용하기 전에 프로그램에 드라이버를 등록해야합니다. 드라이버 등록은 Oracle 드라이버의 클래스 파일이 메모리에로드되는 프로세스이므로 JDBC 인터페이스 구현으로 활용할 수 있습니다.

이 등록은 프로그램에서 한 번만 수행하면됩니다. 두 가지 방법 중 하나로 드라이버를 등록 할 수 있습니다.

접근 방식 I-Class.forName ()

드라이버를 등록하는 가장 일반적인 방법은 Java의 Class.forName()메서드를 사용하여 드라이버의 클래스 파일을 메모리에 동적으로로드하여 자동으로 등록합니다. 이 방법은 드라이버 등록을 구성 가능하고 이식 가능하게 만들 수 있기 때문에 선호됩니다.

다음 예제는 Class.forName ()을 사용하여 Oracle 드라이버를 등록합니다.

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

당신이 사용할 수있는 getInstance() 비준수 JVM을 해결하기위한 방법이지만 다음과 같이 두 개의 추가 예외 코드를 작성해야합니다.

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("Error: access problem while loading!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("Error: unable to instantiate driver!");
   System.exit(3);
}

접근법 II-DriverManager.registerDriver ()

드라이버를 등록하는 데 사용할 수있는 두 번째 방법은 정적 DriverManager.registerDriver() 방법.

당신은 사용해야 registerDriver를 () 가 아닌 JDK 준수 JVM을 사용하는 경우 마이크로 소프트에서 제공하는 것과 같은 방법을.

다음 예제는 registerDriver ()를 사용하여 Oracle 드라이버를 등록합니다.

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

데이터베이스 URL 공식화

드라이버를로드 한 후 다음을 사용하여 연결을 설정할 수 있습니다. DriverManager.getConnection()방법. 쉽게 참조 할 수 있도록 오버로드 된 세 가지 DriverManager.getConnection () 메서드를 나열하겠습니다.

  • getConnection (문자열 URL)

  • getConnection (문자열 URL, 속성 소품)

  • getConnection (문자열 URL, 문자열 사용자, 문자열 비밀번호)

여기서 각 양식에는 데이터베이스가 필요합니다. URL. 데이터베이스 URL은 데이터베이스를 가리키는 주소입니다.

데이터베이스 URL을 공식화하면 연결 설정과 관련된 대부분의 문제가 발생합니다.

다음 표에는 인기있는 JDBC 드라이버 이름과 데이터베이스 URL이 나열되어 있습니다.

RDBMS JDBC 드라이버 이름 URL 형식
MySQL com.mysql.jdbc.Driver jdbc:mysql://호스트 이름 / 데이터베이스 이름
신탁 oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@호스트 이름 : 포트 번호 : 데이터베이스 이름
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:호스트 이름 : 포트 번호 / 데이터베이스 이름
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:호스트 이름 : 포트 번호 / 데이터베이스 이름

URL 형식으로 강조 표시된 모든 부분은 정적이며 데이터베이스 설정에 따라 나머지 부분 만 변경하면됩니다.

연결 개체 만들기

우리는 세 가지 형태를 나열했습니다 DriverManager.getConnection() 연결 개체를 만드는 방법.

사용자 이름 및 비밀번호와 함께 데이터베이스 URL 사용

가장 일반적으로 사용되는 getConnection () 형식을 사용하려면 데이터베이스 URL, 사용자 이름비밀번호 를 전달해야 합니다 .

Oracle을 사용한다고 가정합니다. thin 드라이버의 경우 URL의 데이터베이스 부분에 host : port : databaseName 값을 지정합니다.

호스트 이름이 amrood 인 TCP / IP 주소 192.0.0.1에 호스트가 있고 Oracle 리스너가 포트 1521에서 수신하도록 구성되어 있고 데이터베이스 이름이 EMP 인 경우 전체 데이터베이스 URL은 다음과 같습니다.

jdbc:oracle:thin:@amrood:1521:EMP

이제 적절한 사용자 이름과 암호로 getConnection () 메서드를 호출하여 Connection 다음과 같이 개체-

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

데이터베이스 URL 만 사용

DriverManager.getConnection () 메소드의 두 번째 형식은 데이터베이스 URL 만 필요합니다.

DriverManager.getConnection(String url);

그러나이 경우 데이터베이스 URL은 사용자 이름과 비밀번호를 포함하며 다음과 같은 일반적인 형식을 갖습니다.

jdbc:oracle:driver:username/password@database

따라서 위의 연결은 다음과 같이 만들 수 있습니다.

String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

데이터베이스 URL 및 속성 개체 사용

DriverManager.getConnection () 메소드의 세 번째 형태는 데이터베이스 URL과 속성 객체를 필요로합니다.

DriverManager.getConnection(String url, Properties info);

속성 개체에는 키워드-값 쌍 집합이 있습니다. getConnection () 메서드를 호출하는 동안 드라이버 속성을 드라이버에 전달하는 데 사용됩니다.

이전 예제에서 만든 동일한 연결을 만들려면 다음 코드를 사용하십시오.

import java.util.*;

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

JDBC 연결 닫기

JDBC 프로그램이 끝나면 각 데이터베이스 세션을 종료하기 위해 데이터베이스에 대한 모든 연결을 명시 적으로 닫아야합니다. 그러나 잊어 버린 경우 Java의 가비지 수집기는 오래된 개체를 정리할 때 연결을 닫습니다.

특히 데이터베이스 프로그래밍에서 가비지 수집에 의존하는 것은 매우 열악한 프로그래밍 관행입니다. 연결 객체와 관련된 close () 메서드를 사용하여 항상 연결을 닫는 습관을 만들어야합니다.

연결이 닫혔는지 확인하려면 코드에 '최종'블록을 제공 할 수 있습니다. A는 최종적 없이 예외의 발생 여부를 항상 실행하는 블록.

위의 열린 연결을 닫으려면 다음과 같이 close () 메서드를 호출해야합니다.

conn.close();

연결을 명시 적으로 닫으면 DBMS 리소스가 절약되므로 데이터베이스 관리자가 만족할 수 있습니다.

더 나은 이해를 위해 JDBC-샘플 코드 튜토리얼 을 공부하는 것이 좋습니다 .