English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JDBC 데이터베이스 연결

적절한 드라이버가 설치되면 JDBC를 통해 데이터베이스 연결을 설정할 수 있습니다.

JDBC 연결을 설정하는 프로그래밍은 매우 간단합니다. 이 간단한 네 가지 단계입니다:-

  • JDBC 패키지를 가져옵니다:Java 프로그램에 문장을 추가합니다 importJava 코드에서 필요한 클래스를 가져오기 위해 사용됩니다.

  • JDBC 드라이버 등록: 이 단계는 JVM이 필요한 드라이버 구현을 메모리에 로드하여 JDBC 요청을 충족시키도록 합니다.

  • 데이터베이스 URL 설정: 이는 정확한 형식의 주소를 생성하여, 연결하려는 데이터베이스로 가는 주소를 설정하는 것입니다.

  • 연결 객체를 생성합니다:마지막으로, 다음과 같은 코드를 작성합니다:DriverManager객체의getConnection( )方法的调用的代码,以建立实际的数据库连接。

导入JDBC包

Import 语句告诉 Java 编译器在哪里可以找到代码中引用的类,并且放在源代码的开头。

要使用标准 JDBC 包(它允许您选择、插入、更新和删除 SQL 表中的数据) ,请将以下导入添加到源代码中

import java.sql.* ;  // 用于标准JDBC程序
import java.math.* ; // 获得BigDecimal和BigInteger支持

注册 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,但是随后您必须编写两个额外的Exception的代码,如下所示:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("错误:无法加载驱动程序类!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("错误:加载时出现访问问题!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("错误:无法实例化驱动程序!");
   System.exit(3);
}

方法二- DriverManager.registerDriver()

您可以用来注册驱动程序的第二种方法是使用静态方法 DriverManager.registerDriver()

如果使用的是不兼容JDK的JVM(例如Microsoft提供的JVM),则应使用 registerDriver() 메서드.

아래 예제는 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(String url)

  • getConnection(String url, Properties prop)

  • getConnection(String url, String user, String password)

여기서, 각 형식에 데이터베이스가 필요합니다URL.데이터베이스 URL은 데이터베이스로 가는 주소입니다

데이터베이스 URL을 설정하는 것은 대부분의 연결 문제가 발생하는 곳입니다

아래 표는 일반적인 JDBC 드라이버 이름과 데이터베이스 URL을 나열합니다

데이터베이스JDBC 드라이버 이름URL 형식
MySQLcom.mysql.jdbc.Driverjdbc:mysql://hostname/ databaseName
ORACLEoracle.jdbc.driver.OracleDriverjdbc:oracle:thin:@hostname:port Number:databaseName
DB2COM.ibm.db2.jdbc.net.DB2Driverjdbc:db2:hostname:port Number/databaseName
Sybasecom.sybase.jdbc.SybDriverjdbc:sybase:Tds:hostname: 포트 번호/databaseName

URL 형식에서 모두 강조된 부분은 고정적이며, 나머지 부분은 데이터베이스 설정에 따라 변경하시면 됩니다

연결 객체를 생성합니다

저희는 세 가지를 나열했습니다 DriverManager.getConnection() 연결 객체를 생성하는 메서드를 생성하는 방법.

사용자 이름과 비밀번호를 포함한 데이터베이스 URL을 사용합니다.

getConnection() 가장 일반적인 형식은 데이터베이스 URL을 전달하도록 요구합니다.사용자 이름비밀번호

假设您正在使用Oracle의thin驱动程序,则将为URL의 데이터베이스 부분에 host:port:databaseName 값을 지정합니다。

如果您在TCP / IP 주소192.0.0.1上有一个主机,其主机名为 amrood,并且您的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和Properties对象-

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() 메서드를 사용하여 데이터베이스 연결을 닫는 습관을 들여야 합니다.

연결을 닫기 위해 보장하려면 코드에서 'finally' 블록을 제공할 수 있습니다.finally블록은 예외가 발생했는지 여부에 관계없이 항상 실행됩니다.

위에서 열린 연결을 닫기 위해 close() 메서드를 다음과 같이 호출해야 합니다:

conn.close();

연결을 명시적으로 닫으면 DBMS 자원을 절약할 수 있으며, 이는 여러분의 데이터베이스 관리자에게 만족스러울 것입니다.

좋은 이해를 위해, 우리는 여러분이 다음을 공부하는 것을 추천합니다JDBC-예제 코드 튜토리얼