JDBC 데이터베이스 연결 경험 치 모음

자바 데이터베이스 연결(JDBC)은 자바 프로 그래 밍 언어 로 작 성 된 클래스 와 인터페이스 로 구성 되 어 있 습 니 다.JDBC 는 도구/데이터베이스 개발 자 에 게 데이터베이스 응용 프로그램 을 순수한 자바 API 로 작성 할 수 있 도록 표준 API 를 제공 합 니 다.그러나 각 개발 업 체 의 인 터 페 이 스 는 완전히 같 지 않 기 때문에 개발 환경의 변 화 는 일정한 배치 변 화 를 가 져 올 것 이다.본 고 는 주로 서로 다른 데이터 뱅 크 의 연결 방식 을 집합 하 였 다.1.각종 데이터 베 이 스 를 연결 하 는 방식 의 속사 표 아래 에 각종 데이터 베 이 스 를 JDBC 로 연결 하 는 방식 을 나열 하여 하나의 매 뉴 얼 로 사용 할 수 있 습 니 다.1.Oracle 8/8i/9i 데이터베이스(thin 모드)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl     SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);

 
     2.DB2 데이터베이스
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample"; //sample       
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);

 
    3.Sql Server 7.0/2000 데이터베이스
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb    
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);

 
    4.Sybase 데이터베이스
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB       
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);

 
    5.Informix 데이터베이스
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword"; //myDB     
Connection conn= DriverManager.getConnection(url);

 
     6.MySQL 데이터베이스
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB     
Connection conn= DriverManager.getConnection(url);

    7.PostgreSQL 데이터베이스
Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/myDB" //myDB     
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);

 
    8.access 데이터 베 이 스 는 ODBC 를 직접 사용 합 니 다.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connection conn = DriverManager.getConnection(url,"","");
Statement stmtNew=conn.createStatement() ;

 
2.JDBC 가 MySql 에 연결 하 는 방식 은 JDBC 로 MySql 에 연결 하 는 작은 튜 토리 얼 1 입 니 다.드라이버 MySQL 이 현재 제공 하 는 자바 드라이버 는 Connection/J 입 니 다.MySQL 공식 사이트 에서 다운로드 할 수 있 고 my sql-connector-java-3.0.15-ga-bin.jar 파일 을 찾 을 수 있 습 니 다.이 드라이버 는 순수 자바 드라이버 이 므 로 다른 설정 을 하지 않 아 도 됩 니 다.2.classpath 를 동적 으로 지정 합 니 다.실행 할 때 classpath 를 동적 으로 지정 하면 실행 할 때-cp 방식 을 사용 합 니 다.그렇지 않 으 면 위의.jar 파일 을 classpath 환경 변수 에 추가 합 니 다.3.드라이버 불 러 오기
try{
 Class.forName(com.mysql.jdbc.Driver);
 System.out.println(Success loading Mysql Driver!);
}catch(Exception e)
{
 System.out.println(Error loading Mysql Driver!);
 e.printStackTrace();
}

 
    4.연 결 된 url 설정
jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

 
3.JDBC 를 사용 하여 Oracle 데이터 베 이 스 를 연결 할 때 사용 할 수 있 는 기술 1.클 라 이언 트 소프트웨어 개발 에서 Thin 드라이버 를 사용 하여 자바 소프트웨어 를 개발 하 는 데 있어 Oracle 의 데이터 베 이 스 는 네 가지 유형의 드라이버 를 제공 하고 두 가 지 는 응용 소프트웨어,applets,servlets 등 클 라 이언 트 소프트웨어 에 사용 합 니 다.다른 두 가지 데이터베이스 에 사용 되 는 자바 저장 프로 세 스 등 서버 엔 드 소프트웨어.클 라 이언 트 엔 드 소프트웨어 개발 에서 우 리 는 OCI 드라이버 나 Thin 드라이버 를 선택 할 수 있다.OCI 드라이버 는 자바 로 컬 인터페이스(JNI)를 이용 하여 Oracle 클 라 이언 트 소프트웨어 를 통 해 데이터베이스 와 통신 한다.Thin 드라이버 는 순수 자바 드라이버 로 데이터베이스 와 직접 통신 합 니 다.최고의 성능 을 얻 기 위해 Oracle 은 클 라 이언 트 소프트웨어 개발 에 OCI 드라이버 를 사용 하 는 것 이 옳 은 것 같다.그러나 저 는 Thin 드라이버 를 사용 하 는 것 을 권장 합 니 다.여러 번 의 테스트 를 통 해 일반적인 상황 에서 Thin 드라이버 의 성능 이 OCI 드라이버 를 초과 한 것 을 발 견 했 기 때 문 입 니 다.2.자동 제출 기능 을 닫 고 시스템 성능 을 향상 시 킵 니 다.데이터 베 이 스 를 처음 구축 할 때 부족 한 상황 에서 연결 은 자동 제출 모드 에서 이 루어 집 니 다.더 좋 은 성능 을 얻 기 위해 서 는 불 값 false 매개 변 수 를 가 진 Connection 류 의 setAutoCommit()방법 으로 자동 제출 기능 을 닫 을 수 있 습 니 다.다음 과 같 습 니 다.conn.setAutoCommit(false);주의해 야 할 것 은 자동 제출 기능 이 꺼 지면 Connection 류 의 commt()와 rollback()방법 을 호출 하여 인공 적 으로 업 무 를 관리 해 야 한 다 는 점 이다.3.동적 SQL 또는 시간 제한 명령 에서 Statement 대상 을 사용 하여 SQL 명령 을 수행 할 때 저 희 는 두 가지 선택 이 있 습 니 다.Prepared Statement 대상 을 사용 할 수도 있 고 Statement 대상 을 사용 할 수도 있 습 니 다.같은 SQL 명령 을 여러 번 사용 하 더 라 도 Prepared Statement 은 한 번 만 해석 하고 컴 파일 합 니 다.Statement 대상 을 사용 할 때 SQL 명령 을 실행 할 때마다 분석 하고 컴 파일 합 니 다.이 는 Prepared Statement 대상 을 사용 하 는 것 이 Statement 대상 을 사용 하 는 것 보다 속도 가 빠르다 고 생각 할 수 있 습 니 다.그러나 내 가 실시 한 테스트 에 따 르 면 클 라 이언 트 소프트웨어 에서 상황 은 그렇지 않다.따라서 시간 제한 이 있 는 SQL 작업 에 서 는 SQL 명령 을 일괄 적 으로 처리 하지 않 는 한 Statement 대상 을 사용 하 는 것 을 고려 해 야 합 니 다.또한,Statement 대상 을 사용 하면 동적 SQL 명령 을 작성 하 는 것 이 더욱 간단 합 니 다.문자열 을 연결 하여 효과 적 인 SQL 명령 을 만 들 수 있 기 때 문 입 니 다.따라서 Statement 대상 은 동적 SQL 명령 의 생 성과 실행 을 더욱 간단하게 할 수 있다 고 생각 합 니 다.4.helper 함 수 를 이용 하여 동적 SQL 명령 을 포맷 합 니 다.Statement 대상 이 실행 하 는 동적 SQL 명령 을 만 들 때 포맷 문 제 를 처리 해 야 합 니 다.예 를 들 어 O'Reilly 라 는 이름 을 표 에 삽입 하 는 SQL 명령 을 만 들 려 면 O'Reilly 의'''번 호 를 두 개 로 바 꿔 야 합 니 다.이 작업 을 완성 하 는 가장 좋 은 방법 은 교체 작업 을 마 친 helper 방법 을 만 든 다음 문자열 심 을 연결 하여 공식 적 으로 SQL 명령 을 표현 할 때 만 든 helper 방법 을 사용 하 는 것 입 니 다.이와 유사 한 것 은 helper 방법 으로 Date 형의 값 을 받 아들 이 고 Oracle 기반 to 를 출력 할 수 있 습 니 다.date()함수 의 문자열 표현 식 입 니 다.5.Prepared Statement 대상 을 이용 하여 데이터베이스 의 전체적인 효율 을 향상 시 킵 니 다.Prepared Statement 대상 을 사용 하여 SQL 명령 을 수행 할 때 명령 은 데이터 베 이 스 를 분석 하고 컴 파일 한 다음 명령 버퍼 에 놓 입 니 다.그리고 같은 Prepared Statement 대상 을 실행 할 때마다 다시 해석 되 지만 다시 컴 파일 되 지 않 습 니 다.버퍼 에서 미리 컴 파일 된 명령 을 발견 하고 다시 사용 할 수 있 습 니 다.많은 사용자 가 있 는 기업 급 애플 리 케 이 션 에 서 는 같은 SQL 명령 을 반복 적 으로 실행 하고,Prepared Statement 대상 이 가 져 온 컴 파일 횟수 의 감 소 를 사용 하면 데이터 뱅 크 의 전체적인 성능 을 향상 시 킬 수 있다.클 라 이언 트 가 Prepared Statement 작업 을 만 들 고 준비 하 며 수행 하 는 데 걸 리 는 시간 이 Statement 작업 보다 길 지 않 으 면 동적 SQL 명령 을 제외 한 모든 상황 에서 Prepared Statement 대상 을 사용 하 는 것 을 권장 합 니 다.6.반복 되 는 삽입 또는 업데이트 작업 을 일괄 처리 할 때 Prepared Statement 대상 을 사용 합 니 다.
삽입 과 업데이트 작업 을 일괄 적 으로 처리 하면 필요 한 시간 을 현저히 줄 일 수 있다.Oracle 이 제공 하 는 Statement 과 Callable Statement 은 일괄 처 리 를 진정 으로 지원 하지 않 고 Prepared Statement 대상 만 이 일괄 처 리 를 진정 으로 지원 합 니 다.저 희 는 addBatch()와 executeBatch()방법 으로 표준 JDBC 일괄 처 리 를 선택 하거나 Prepared Statement 대상 의 setExecuteBatch()방법 과 표준 executeUpdate()방법 으로 속도 가 빠 른 Oracle 만 의 방법 을 선택 할 수 있 습 니 다.Oracle 만 의 일괄 처리 체 제 를 사용 하려 면 다음 과 같은 방식 으로 setExecuteBatch()를 호출 할 수 있 습 니 다.
PreparedStatement pstmt3D null;
try {
 ((OraclePreparedStatement)pstmt).setExecuteBatch(30);
 ...
 pstmt.executeUpdate();
}

 
setExecuteBatch()를 호출 할 때 지정 한 값 은 상한 선 입 니 다.이 값 에 도달 하면 자동 으로 SQL 명령 이 실 행 됩 니 다.표준 execute Update()방법 은 일괄 처리 로 데이터베이스 에 전 달 됩 니 다.우 리 는 Prepared Statement 류 의 sendBatch()방법 을 호출 하여 수시로 일괄 처리 임 무 를 전송 할 수 있 습 니 다.7.Oracle locator 방법 으로 대상(LOB)Oracle 을 삽입,업데이트 하 는 Prepared Statement 류 는 BLOB 와 CLOB 등 대상 의 처 리 를 완전히 지원 하지 않 습 니 다.특히 Thin 드라이버 는 Prepared Statement 대상 을 이용 한 setObject()와 setBinary Stream()방법 으로 BLOB 의 값 을 설정 하 는 것 도 지원 하지 않 고 setCharacterStream()방법 으로 CLOB 의 값 을 설정 하 는 것 도 지원 하지 않 습 니 다.locator 자체 의 방법 만 이 데이터베이스 에서 LOB 형식의 값 을 가 져 올 수 있 습 니 다.Prepared Statement 대상 을 사용 하여 LOB 를 삽입 하거나 업데이트 할 수 있 지만 locator 를 사용 해 야 LOB 의 값 을 가 져 올 수 있 습 니 다.이 두 가지 문제 가 존재 하기 때문에 저 는 locator 의 방법 으로 LOB 의 값 을 삽입 하거나 업데이트 하거나 가 져 오 는 것 을 권장 합 니 다.8.SQL 92 문법 을 사용 하여 저장 과정 을 호출 할 때 저 희 는 SQL 92 또는 Oracle PL/SQL 을 사용 할 수 있 습 니 다.Oracle PL/SQL 을 사용 하 는 것 은 실제 적 인 이점 이 없고 앞으로 응용 프로그램 을 유지 하 는 개발 자 에 게 번 거 로 움 을 줄 수 있 기 때문에 저 는 저장 과정 을 호출 할 때 SQL 92 를 사용 하 는 것 을 권장 합 니 다.9.Object SQL 을 사용 하여 대상 모드 를 데이터베이스 에 옮 길 수 있 습 니 다.Oracle 의 데이터 베 이 스 를 대상 을 대상 으로 하 는 데이터 베이스 로 사용 할 수 있 으 면 응용 프로그램의 대상 모드 를 데이터 베이스 로 옮 기 는 것 을 고려 할 수 있 습 니 다.현재 방법 은 자바 비 안 을 위장 데이터베이스 대상 으로 만 들 고 그들의 속성 을 관계 표 에 투사 한 다음 이 비 안에 방법 을 추가 하 는 것 이다.비록 이렇게 하 는 것 은 자바 에서 아무런 문제 가 없 지만 조작 은 모두 데이터베이스 밖에서 진행 되 기 때문에 다른 데이터 베 이 스 를 방문 하 는 응용 프로그램 은 대상 모델 을 이용 할 수 없다.Oracle 의 대상 을 대상 으로 하 는 기술 을 이용 하면 새로운 데이터베이스 대상 유형 을 만들어 데이터베이스 에서 데이터 와 조작 을 모방 한 다음 에 JPublisher 등 도 구 를 사용 하여 자신의 자바 bean 류 를 생 성 할 수 있다.만약 에 이런 방식 을 사용한다 면 자바 응용 프로그램 은 응용 프로그램의 대상 모델 을 사용 할 수 있 을 뿐만 아니 라 응용 프로그램의 데이터 와 조작 을 공유 해 야 하 는 다른 응용 프로그램 도 응용 프로그램의 대상 모델 을 사용 할 수 있다.
     10.SQL 을 이용 하여 데이터베이스 내의 조작 을 완성 하고 자 합 니 다.제 가 여러분 께 소개 하고 자 하 는 가장 중요 한 경험 은 SQL 의 집합 을 위 한 방법 을 충분히 이용 하여 데이터베이스 처리 수 요 를 해결 하 는 것 입 니 다.자바 등 과정 화 된 프로 그래 밍 언어 를 사용 하 는 것 이 아 닙 니 다.프로그래머 가 한 표 에서 많은 줄 을 찾 으 려 면 결과 의 모든 줄 이 다른 표 의 데 이 터 를 찾 습 니 다.마지막 으로 프로그래머 는 첫 번 째 표 의 데 이 터 를 일괄 적 으로 업데이트 하기 위해 독립 된 UPDATE 명령 을 만 들 었 습 니 다.이와 유사 한 작업 은 set 자구 에서 여러 열 로 조회 하여 UPDATE 명령 에서 수행 할 수 있 습 니 다.단일 한 SQL 명령 에서 임 무 를 수행 할 수 있 을 때 데 이 터 를 네트워크 에서 흐 르 게 할 필요 가 있 습 니까?나 는 사용자 가 SQL 의 기능 을 최대한 발휘 하 는 방법 을 열심히 공부 할 것 을 건의 합 니 다.

좋은 웹페이지 즐겨찾기