DBMS JAVA (JDBC) 연결 활용

으누·2024년 8월 31일
0
post-thumbnail

DBMS Java (JDBC) 연결하기

DriverConnect

DBMS SQL Developer에서 계정을 먼저 생성한다.

-- system 계정 연결해서 DBTEST 계정 생성

CREATE USER DBTEST IDENTIFIED BY a1234;

system 계정에서 DBTEST 계정을 상속해준다.

GRANT CONNECT, RESOURCE TO BY DBTEST;

유저 생성합니다

ALTER USER DBTEST DEFAULT TABLESPACE USERS;
ALTER USER DBTEST QUOTA UNLIMITED ON USERS;

DBMS 계정을 만들고 테이블 생성합니다.

-- DBTEST 계정에 member 테이블 생성

CREATE TABLE member(
name VARCHAR2(20) NOT NULL,
age NUMBER(3),
height NUMBER(10, 2),
logtime DATE
);
DESC member;

JAVA에서 데이터를 만들면 아래에서 확인이 가능하다!

SELECT * FROM member;


JAVA (JDBD)

eclipse-jee 를 설치 받아 실행하였습니다

JDBC

package ch01_driver;

import java.sql.Connection;
import java.sql.DriverManager;

JDBC (Java Database Connectctivity )

- JAVA 와 Database 연동을 위한 프로그래밍 API 입니다.

JDBC 드라이버

- DBMS 마다 별도의 드라이버가 필요합니다.

- 프로젝트의 build path 를사용해서 추가합니다.

> 프로젝트명 마우스 우측 클릭

Build Path -> Configure Bild Path -> Libararies 탭-> Add External -> ojdbc.jar 파일 추가

JDBC 드라이버 클래스

- oracle.jdbc.OracleDriver

Oracle Database URL

- jdbc:oracle: driver_type:@host_name(ip):port:sevice_name

jdbc:orclae:thin:@localhost:1521:xe

public class DriverConnect {

	public static void main(String[] args) {

//		Oracle JDBC 드라이버 클래스 메모리에 로드
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			System.out.println("로딩 성공!");
		} catch (Exception e) {
			
			System.out.println("로딩 실패~");
			e.printStackTrace();
		}
//		연결 정보
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String id =  "dbtest";
		String pwd = "a1234";

		Connection con = null;
		try {
			// DB 연결 객체 생성
			con = DriverManager.getConnection(url, id, pwd);
			System.out.println("연결 성공...");
		} catch (Exception e) {
			System.out.println("연결실패~");
			e.printStackTrace();
		}

	}

}

ImsertTest ( 데이터를 생성합니다)

package ch01_driver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;

JDBC 절차

1. DriverMananger 에 해당 DMBS Driver 등록

2. Driver 로 부터 Connection instancce 획득

3. Connection 객체의 prepareStatement() 메서드를 사용해서 PreparedStatement 객체 생성

- 각각의 인수에 대해서 위치홀더(?)를 사용해서 SQL 문장을 정의합니다.

4. 쿼리 실행

PreparedStatement : import java.sql.PreparedStatement;

  • 쿼리 실행을 위한 class
  • 쿼리 실행 메서드

> int executeUpdate() : insert,delete,update 문을 실행해서 성공한 행의 수를 반환합니다.

ResultSet executeQuery() : select 문을 실행한 결과의 테입르 내용을 ResultSet 에 담아서 반환합니다.


class Insert {

//	연결 정보
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String id = "dbtest";
	private String pwd = "a1234";

	public Insert() {
//	Oracle JDBC 드라이버 클래스 메모리에 로드
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			System.out.println("로딩 성공!");
		} catch (Exception e) {
			System.out.println("로딩 실패~");
			e.printStackTrace();
		}
	}// Insert

	public Connection getConnection() {
		Connection con = null;
		try {
			// DB 연결 객체 생성
			con = DriverManager.getConnection(url, id, pwd);
			System.out.println("연결 성공...");
		} catch (Exception e) {
			System.out.println("연결실패~");
			e.printStackTrace();
		}
		return con;
	}// getConnection

	// 회원 추가
	public void insertData() {
		Scanner scanner = new Scanner(System.in);
		System.out.print("이름 입력 >");
		String name = scanner.nextLine();
		System.out.print("나이 입력 >");
		int age = scanner.nextInt();
		System.out.print("키 입력 >");
		double height = scanner.nextDouble();

		Connection con = null;
		PreparedStatement pstmt = null;
		int res = 1;

		try {
			// 쿼리 문자열
			String sql = "insert into member values(?,?,?,sysdate)";
			con = getConnection(); // connection 객체 생성
			pstmt = con.prepareStatement(sql); // 쿼리문 실행 객체 생성
			pstmt.setString(1, name); // 쿼리문 완성
			pstmt.setInt(2, age);
			pstmt.setDouble(3, height);
			res = pstmt.executeUpdate();        // 쿼리문 실행

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// 사용 자원 종료
				if (pstmt != null)
					pstmt.close();
				if (con != null)
					con.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		System.out.println(res + "개의 행이 추가 되었습니다..");
	}

}// Insert 

public class ImsertTest {

	public static void main(String[] args) {

		Insert db = new Insert();
		// db.getConnection();
		db.insertData();
		
			
		
		
		
	}

}

SelectTest

package ch03_select;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
#### 
class Select {

	// 연결 정보
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String id = "dbtest";
	private String pwd = "a1234";

	public Select() {
 // Oracle JDBC 드라이버 클래스 메모리에 로드
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			System.out.println("로딩 성공!");   
		} catch (Exception e) {
			System.out.println("로딩 실패~");
			e.printStackTrace();
		}
	}// Insert()

	public Connection getConnection() {
		Connection con = null;
		try {
			// DB 연결 객체 생성
			con = DriverManager.getConnection(url, id, pwd);
			System.out.println("연결 성공...");
		} catch (Exception e) {
			System.out.println("연결실패~");
			e.printStackTrace();
		}
		return con;
	}// getConnection

	// 회원 목록
	public void selectData() {

		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet res = null;

		try {

			String sql = "select * from member";
			con = this.getConnection();
			pstmt = con.prepareStatement(sql);
			res = pstmt.executeQuery();

			while (res.next()) {
				String name = res.getString("name");
				int age = res.getInt("age");
				double height = res.getDouble("height");
				String logtime = res.getString("logtime");
				System.out.println(name + "\t" + age + "\t" + height + "\t" + logtime);
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (res != null)
					res.close();
				if (pstmt != null)
					pstmt.close();
				if (con != null)
					con.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}

} // Select

public class SelectTest {

	public static void main(String[] args) {

		Select db = new Select();
		//db.getConnection();
		db.selectData();
	}

}

Update (데이터를 수정합니다)

package ch04_Update;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
class Update {
	
	// 연결 정보
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String id = "dbtest";
	private String pwd = "a1234";
	
	public Update() {
		// Oracle JDBC 드라이버 클래스 메모리에 로드
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			//System.out.println("로딩 성공...");
		} catch (Exception e) {
			//System.out.println("로딩 실패~");
			e.printStackTrace();
		}
	} // Insert()
	
	public Connection getConnection() {
		Connection con = null;
		try {
			// DB 연결 객체 생성
			con = DriverManager.getConnection(url, id, pwd);
			//System.out.println("연결 성공...");
		} catch (Exception e) {
			//System.out.println("연결 실패~");
			e.printStackTrace();
		}
		return con;
	} // getConnection()
	
	
	// 회원 나이 수정
	public void updateData() {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("수정 이름 입력 > ");
		String name = scanner.next();
		
		Connection con = null;
		PreparedStatement pstmt = null;
		int su = 0;
		
		try {
			
			String sql = "update member set age=age+1 where name=?";
			con = this.getConnection();
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, name);
			su = pstmt.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstmt != null) pstmt.close();
				if(con != null) con.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		System.out.println(su + "개의 행이 수정 되었습니다..");
		
	}
	
} // Update 


public class UpdateTest {

	public static void main(String[] args) {
		
		Update db = new Update();
		db.updateData();
		
	}
	
}

Delete ( 데이터를 삭제합니다)

package ch05_delete;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
class Delete {
	
	// 연결 정보
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String id = "dbtest";
	private String pwd = "a1234";
	
	public Delete() {
		// Oracle JDBC 드라이버 클래스 메모리에 로드
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			//System.out.println("로딩 성공...");
		} catch (Exception e) {
			//System.out.println("로딩 실패~");
			e.printStackTrace();
		}
	} // Insert()
	
	public Connection getConnection() {
		Connection con = null;
		try {
			// DB 연결 객체 생성
			con = DriverManager.getConnection(url, id, pwd);
			//System.out.println("연결 성공...");
		} catch (Exception e) {
			//System.out.println("연결 실패~");
			e.printStackTrace();
		}
		return con;
	} // getConnection()
	
	
	// 회원 삭제
	public void deleteData() {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("삭제 이름 입력 > ");
		String name = scanner.next();
		
		Connection con = null;
		PreparedStatement pstmt = null;
		int su = 0;
		
		try {
			
			String sql = "delete from member where name=?";
			con = this.getConnection();
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, name);
			su = pstmt.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstmt != null) pstmt.close();
				if(con != null) con.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		System.out.println(su + "개의 행이 삭제 되었습니다..");
		
	}
	
} // Delete

public class DeleteTest {

	public static void main(String[] args) {
		
		Delete db = new Delete();
		db.deleteData();
		
		
		
	}
	
}
profile
코딩 일기장

0개의 댓글