(3)JDBC 설정

7089 단어 자바jdbcDerby
더 읽 기
3.1 데이터베이스 URL 은 데이터 베 이 스 를 연결 할 때 호스트 이름,포트 번호 와 데이터 베이스 이름 등 데이터 베이스 유형 과 관련 된 각종 매개 변 수 를 사용 해 야 합 니 다.JDBC 는 데이터 원본 을 설명 하기 위해 일반 URL 과 유사 한 문법 을 사용 했다.예 를 들 어 상용 데이터베이스 URL 더비:  jdbc:derby://localhost:1527/COREJAVA;create=true PostgreSQL: jdbc:postgresql:COREJAVA MySQL:  jdbc:mysql://host:port/database Oracle:  jdbc:oracle:thin:@host:port:databse JDBC URL 의 문법 은 일반적으로 jdbc:subprotocol:other stuff subprotocol 로 데이터베이스 에 연 결 된 특정 드라이버 를 가리 키 는 데 사 용 됩 니 다.other stuff 인자 의 형식 은 사용 하 는 subprotocol 에 따라 다 릅 니 다.3.2 드라이버 JAR 파일 은 데이터베이스 에 접근 하 는 프로그램 을 실행 할 때 드라이버 의 JAR 파일 을 클래스 경로 에 포함 시 켜 야 합 니 다(컴 파일 시 전체 JAR 파일 이 필요 하지 않 음)명령 행 에서 시작 할 때 아래 명령 자바-classpath 만 사용 해 야 합 니 다.driverJar ProgramName 통과;현재 경로(.문자 로 표 시 된 경로)와 드라이버 의 JAR 파일 을 구분 합 니 다.3.3 데이터베이스 서버 를 시작 하기 전에 Derby 데이터 베 이 스 를 시작 하 는 시작 단계(1)명령 셸(linux)또는 cmd(windows)창 C:\"Program Files"\Sun\JavaDB\\lib(2)에서 derby run.jar 를 찾 아야 합 니 다.보통 JavaDB 에서(C:\Program Files\Sun\JavaDB\lib)(3)시작 서비스:자바-jar derby run.jar server start(4)설정 파일 db.properties ij.driver=org.apache.derby.jdbc.ClientDriver  ij.protocol=jdbc:derby://localhost:1527/  ij.database=DBNAME;create=true  메모:설정 파일 이름과 database 만 임의의 이름(5)을 사용 하여 다른 셸/cmd 창 에서 Derby 의 대화 형 스 크 립 트 실행 도 구 를 실행 할 수 있 습 니 다:자바-jar derby run.jar ij-p db.properties 메모:대화 식 실행 스 크 립 트 도 구 를 열 면 derby run.jar 가 있 는 디 렉 터 리 에서 ij.database 의 값 이름 을 설정 하 는 폴 더 를 만 듭 니 다.(6)열 린 창 에 SQL 문 구 를 입력 할 수 있 습 니 다.분점 끝.7)편집기 EXIT 종료;(8)서버 닫 기:java-jar derbyrun.jar server shutdown 3.4 등록 드라이브 클래스 의 경우 1:일부 JDBC 의 JAR 파일 은 자동 으로 드라이브 클래스(Java Standard Edition Service Provider)를 등록 합 니 다.META-INF/services/java.sql.driver 파일 을 포함 한 JAR 파일 은 자동 으로 등록 할 수 있 습 니 다.e.g.derby 에 있 는 lib 디 렉 터 리 아래 JAR 패키지 derby.jar 에는 자바.sql.Driver 파일 이 포함 되 어 있 습 니 다.이 파일 의'org.apache.derby.jdbc.AutoloadedDriver'는 Derby 의 JDBC 드라이버 이름 입 니 다.상황 2:드라이버 JAR 이 자동 등록 을 지원 하지 않 으 면 데이터베이스 공급 자가 사용 하 는 JDBC 드라이브 의 이름 을 찾 아야 합 니 다.전형 적 인 이름 은 다음 과 같 습 니 다.Oracle:oracle.jdbc.driver.Oracle Driver SQLServer:com.microsoft.jdbc.sqlserver.SQLServer Driver MySQL:org.gjt.mm.mysql.driver 또는 com.mysql.jdbc.Driver 주:여 기 는 실제로 호출 된 com.mysql.jdbc.Driver 입 니 다.다음은 org.gjt.mm.mysql.Driver 소스 입 니 다.
 
package org.gjt.mm.mysql;  
import java.sql.SQLException;  

public class Driver extends com.mysql.jdbc.Driver{

} 
 
DriverManager 의 두 가지 등록 방식 DriverManager:JDBC 드라이버 의 기본 서 비 스 를 관리 합 니 다.(1)JAVA 프로그램 에 드라이브 클래스 e.g.Class.forName("com.mysql.jdbc.Driver")을 불 러 옵 니 다.com.my sql.jdbc.Driver 의 정적 방법 은 DriverManager 에 MYSQL 의 구동 인 스 턴 스 를 등록 할 수 있 습 니 다.
public class Driver extends NonRegisteringDriver{
    public Driver() throws SQLException{}
    static {
        try{
            DriverManager.registerDriver(new Driver());
        }
        catch(SQLException E){
            throw new RuntimeException("Can't register driver!");
        }
    }
}
 
Mysql 의 Driver 클래스 는 java.sql.Driver 인 터 페 이 스 를 실 현 했 습 니 다.모든 데이터베이스 공급 자의 드라이버 클래스 는 이 인 터 페 이 스 를 실현 해 야 합 니 다.DriverManager 클래스 에서 사용 하 는 것 은 모두 인터페이스 Driver 형식의 구동 이다.즉,구동 의 사용 은 구체 적 인 실현 에 의존 하지 않 는 다 는 것 이다.com.my sql.jdbc.Driver 류 에 서 는 구조 방법 을 제외 하고 static 의 방법론 입 니 다.DriverManager 의 registerDriver()방법 을 호출 했 습 니 다.이 방법 은 모든 시스템 이 제공 하 는 구동 을 불 러 오고 구체 적 인 구동 류 에 있 으 면 불 러 옵 니 다.(2)jdbc.drivers 속성 을 설정 합 니 다.명령 매개 변 수 를 통 해 이 속성 을 지정 할 수 있 습 니 다.e.g.java-Djdbc.drivers=com.mysql.jdbc.Driver ProgramName 또는 응용 프로그램 에서 호출 을 통 해 시스템 속성 을 설정 할 수 있 습 니 다.이 방법 에서 여러 개의 드라이버 를 제공 할 수 있 으 며,사칭 으로 e.g.System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:oracle.jdbc.driver.Oracle Driver")를 분할 할 수 있 습 니 다.
 
(3)DriverManager.registerDriver(new com.mysql.jdbc.Driver()를 시도 하지 않 았 습 니 다.3.5 데이터베이스 드라이버 에 연결 하여 등 록 된 모든 드라이버 를 옮 겨 다 니 며 데이터베이스 URL 에서 지정 한 하위 프로 토 콜 을 사용 할 수 있 는 드라이버 를 찾 습 니 다.getConnection 방법 은 Connection 대상 을 되 돌려 줍 니 다.데이터베이스 에 연결 하려 면 데이터베이스 의 이름과 암 호 를 알 아야 합 니 다.메모:기본적으로 Derby 는 사용자 이름 으로 연결 할 수 있 고 암 호 를 지 키 지 않 습 니 다.모든 사용자 에 게 하나의 단독 모드 를 만 들 고 기본 사용자 이름 은 app 입 니 다.
package jdbc;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class ConnectionDB {

	public static void main(String[] args) {
		try {
			runTest();
		} catch (SQLException se) {
			for (Throwable t : se) {
				t.printStackTrace();
			}
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} catch (ClassNotFoundException cnfe) {
			cnfe.printStackTrace();
		}
	}

	private static void runTest() throws SQLException, IOException, ClassNotFoundException {
		Connection conn = null;
		Statement stat = null;
		try {
			conn = getConnection();
			stat = conn.createStatement();
			
			stat.executeUpdate("CREATE TABLE greetings(message varchar(20))");
			stat.executeUpdate("INSERT INTO greetings VALUES('Hello,World!')");

			ResultSet result = stat.executeQuery("SELECT message as ms FROM greetings");
			if (result.next()) {
				System.out.println(result.getString("ms"));
			}
			result.close();
			stat.executeUpdate("DROP TABLE greetings");
		} finally {
			stat.close();
			conn.close();
		}
	}

	private static Connection getConnection() throws IOException, SQLException, ClassNotFoundException {
		FileInputStream fis = null;
		try {
			File file = new File(System.getProperty("user.dir")+"/bin/database.properties");
			fis = new FileInputStream(file);
			Properties param = new Properties();
			param.load(fis);

			String drivers = param.getProperty("jdbc.drivers");
			if (drivers != null && !"".equals(drivers)) {
				System.setProperty("jdbc.drivers", drivers);
			}

//			Class.forName(drivers);
			String url = param.getProperty("jdbc.url");
			String username = param.getProperty("jdbc.username");
			String password = param.getProperty("jdbc.password");

			return DriverManager.getConnection(url, username, password);

		} finally {
			fis.close();
		}

	}
}

 
 
#MySQL
jdbc.drivers=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/corejava
jdbc.username=root
jdbc.password=12345678
#Derby
#jdbc.drivers=org.apache.derby.jdbc.AutoloadedDriver
#jdbc.url=jdbc:derby://localhost:1527/COREJAVA;create=true
#jdbc.username=dbuser
#jdbc.password=12345678

좋은 웹페이지 즐겨찾기