본문 바로가기

JAVA/Oracle

JDBC 프로그래밍 연동 설정방법 및 예제

반응형

java 프로그램에서 database 연결 프로그램

==> 'JDBC 프로그래밍' 이라고 함



JDBC 프로그래밍 전 연동 설정 방법


1. DBMS에 따른 jdbc 드라이버를 jdk에 복사 해둔다.

탐색기 - C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib

- 주소에서 두개의 파일 중 ojdbc14 복사하기

2. jdk 설치된 곳으로 감

두군데에 붙여 놓기 해야함

C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext

- 주소에 붙여놓기

C:\Program Files\Java\jre1.8.0_73\lib\ext

- 주소에 붙여놓기

3. 이렇게 하면 준비 끝



이제 자바로 만든 MemberTest02 라는 파일을 준비한다. (코드 밑에 제시되어 있음)


DB 연결코드는 모든 코드 작성 후 마지막에 써야함



JDBC 프로그래밍 순서


1. jdbc 드라이버를 메모리로 로드한다.

로드하는 명령 : Class.forName("드라이버 이름"); // 드라이버이름은 DBMS 마다 다름

로드하는 명령 : Class.forName("oracle.jdbc.driver.OracleDriver");


2. DB 서버에 연결한다.

서버 연결하는 명령 : DriverManager.getConnection(  ); //객체없이 생성된DriverManager는 static으로 구성되어있다는 것임

서버 연결하는 명령 : DriverManager.getConnection( "jdbc:oracle:thin:@IP주소:포트번호:서비스번호","scott","tiger" ); // DBMS 마다 다름

서버 연결하는 명령 : DriverManager.getConnection( "jdbc:oracle:thin:@203.236.209.141:1521:xe","scott","tiger" );


@ 다음 아이피 주소값 확인하는 방법

cmd - ipconfig 쳐서 ip 확인 - 이더넷 어댑터 로컬 영역 연결 중 IPv4 주소 입력값 사용

혹은 localhost 사용해도 됨


포트번호 및 xe 확인방법

C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN 에서 listener.ora 파일을 editplus 끌어보면 포트 번호가 보임

디폴트 서비스 리스너 에 xe 라고 보임


서버 연결하는 명령 : Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@203.236.209.141:1521:xe","scott","tiger" ); // 커넥션에 담기

자바 API 에서 java.sql -> DriverManager -> static Connection 중 getConnection(String url, String user, String password) 참고


3. 연결된 DB서버에 sql문에 실행하기 위한 객체를 생성한다.


연결된 connection 을 데리고 생성한다.

실행하기 위한 객체 생성 명령어 conn.createStatement();

API java.sql -> createStatement 참고

실행하기 위한 객체 생성 명령어 Statement stmt = conn.createStatement();


4. 생성된 stmt를 통해서 sql명령어를 실행한다.


sql 문장 실행 해달라는 명령어 stmt.executeUpdate(sql);

API java.sql -> statement -> executeUpdate 참고(자료수정하거나 자료삭제할때 사용하는 메소드)

리스트에 담긴것 만큼 추가하기

sql 문장 실행 해달라는 명령어 n = n+ stmt.executeUpdate(sql);

그리고 for문 빠져나와서 if문으로 조건 만들기


if (n == list.size()){

System.out.println("회원의 정보를 모두 데이터베이스에 반영했어");

}else{

System.out.println("데이터 베이스 반영에 실패했어");

}




위에 관련 코드

import java.util.*;

import java.sql.*;


// 회원관리 프로그램


class Member{

private String name;

private String tel;

private String addr;


//setter

public void setName(String name){

this.name = name;

}

public void setTel(String tel){

this.tel = tel;

}

public void setAddr(String addr){

this.addr = addr;

}

//getter

public String getName(){

return name;

}

public String getTel(){

return tel;

}

public String getAddr(){

return addr;

}


//생성자

public Member(){}

public Member(String name, String tel, String addr){

this.name = name;

this.tel = tel;

this.addr = addr;

}

//toString

public String toString(){

return "회원이름 : " + name + "\t" + "전화번호 : " + tel + "\t" + "주소 : " + addr;

}

}



class  MemberTest02{

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);


ArrayList<Member> list = new ArrayList<Member>();


System.out.println("=====회원관리 프로그램=====");


//while문 돌리기전 데이터가 있으면 같이 실으면 됨

while(true){

String name, tel, addr;

System.out.println("회원이름 ==>[종료 : q]  ");

name = sc.next();


if (name.equals("q")){

break;

}

System.out.println("회원전화 ==>  ");

tel = sc.next();

System.out.println("회원주소 ==>  ");

addr = sc.next();


list.add(new Member(name, tel, addr));

}


System.out.println(list);


int n = 0;


try{

//JDBC 프로그래밍 순서

//for문에 오기 전에 미리 만들어 두자. 굳이 데이터 저장할때마다 실행될 필요가 없기 때문에.

//1. jdbc 드라이버를 메모리로 로드한다.

Class.forName("oracle.jdbc.driver.OracleDriver");

//2. DB 서버에 연결한다.

Connection conn =DriverManager.getConnection( "jdbc:oracle:thin:@203.236.209.141:1521:xe","scott","tiger" );

//3. 연결된 DB서버에 sql문을 실행하기 위한 객체를 생성한다.

Statement stmt = conn.createStatement();

//4. 4번은 for문 안에서 계속 돌아가야 함



//프로그램 종료하기전 list에 데이터 수 만큼 데이터베이스에 저장하기

for ( Member m : list ){

String sql = "insert into member values('"+m.getName()+"','"+m.getTel()+"','"+m.getAddr()+"')";


//4. 생성된 stmt를 통해서 sql 명령어를 실행한다.

n = n + stmt.executeUpdate(sql);

}


// 데이터베이스 연결을 위해 사용했던 자원을 닫아준다.

stmt.close(); //사용했던 메모리를 해지해주는 기능

conn.close();

}

catch (Exception e){

System.out.println(e);

}


if (n == list.size()){

System.out.println("회원의 정보를 모두 데이터베이스에 반영했어");

}else{

System.out.println("데이터 베이스 반영에 실패했어");

}

}

}


반응형