본문 바로가기

오늘의 공부 & 기록

3월 13일 자바 DB 연동 JDBC

1. 인터페이스 구성

반환형 

매개변수 설정

 

2. Impl

1) 구성한 인터페이스 메서드 전체 오버라이드

2)  생성자 

 

3. 디비 연결

 JDBC(Java DataBase Connectivity)
: 자바 프로그램에서 데이터베이스 연결을 도와주는 기능의 집합

 

* 작업순서
* 1. JDBC Driver 실행
* 2. DataBase로 연결(Connection)
* 3. SQL 명령문을 담아 전달하기 위한 객체(PreparedStatement) 생성
* 4. 명령문을 담은 객체 내 메소드를 호출하여 DataBase로 전달.
* 5. SELECT 명령문을 전달했다면 결과가 존재하기에 객체(ResultSet)로 받음.
* 6. 위에서 열어둔 객체 해제.

 

 

package dbConcept;

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

public class ConnTest {
	public static void main(String[] args) {
		/*
		 * JDBC(Java DataBase Connectivity)
		 * : 자바 프로그램에서 데이터베이스 연결을 도와주는 기능의 집합
		 * 
		 * 작업순서
		 * 1. JDBC Driver 실행
		 * 2. DataBase로 연결(Connection)
		 * 3. SQL 명령문을 담아 전달하기 위한 객체(PreparedStatement) 생성
		 * 4. 명령문을 담은 객체 내 메소드를 호출하여 DataBase로 전달.
		 * 5. SELECT 명령문을 전달했다면 결과가 존재하기에 객체(ResultSet)로 받음.
		 * 6. 위에서 열어둔 객체 해제.
		 */
		
		// 1. JDBC Driver 실행
		try {
			Class.forName("oracle.jdbc.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		// 2. DataBase로 연결(Connection)
		Connection con = null;
		String id = "douzone";
		String password = "oracle";
		/*
		 * 컴퓨터의 주소: IP주소(컴퓨터를 식별하는 용도)
		 * 비유: 서울특별시 동작구 노량진동 아이비빌딩
		 * 192.168.10.1, 127.0.0.1
		 * 127.0.0.1 == 자기자신(내컴퓨터) == localhost
		 * Port Address or Port Number(컴퓨터에서 동작 중인 프로그램 식별 번호)
		 * 비유: 302호
		 * Oracle Database: 1521
		 */
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		try {
			con = DriverManager.getConnection(url, id, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
		Scanner sc = new Scanner(System.in);
		System.out.println("### 회원 등록 ###");
		System.out.print("아이디: "); String userId = sc.next();
		System.out.print("비밀번호: "); String userPw = sc.next();
		System.out.print("이름: "); String userName = sc.next();
		sc.close();
		
		// 3. SQL 명령문을 담아 전달하기 위한 객체(PreparedStatement) 생성
		// 4. 명령문을 담은 객체 내 메소드를 호출하여 DataBase로 전달.
		PreparedStatement ps = null;
		String sql = "INSERT INTO test VALEUS(?, ?, ?, test_seq.nextval)";
		
		try {
			// 아직 DB로 명령문을 전달하지 않음
			ps = con.prepareStatement(sql);
						
			ps.setString(1, userId);
			ps.setString(2, userPw);
			ps.setString(3, userName);
			
			// DB로 명령문 전달
			ps.executeUpdate(); // INSERT, UPDATE, DELETE
			// SELECT -> ps.executeQuery(); 결과값 반환
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		
		// 6. 위에서 열어둔 객체 해제.
		try {
			if(ps != null)
				ps.close();
			if(con != null)
			con.close();			
		} catch (Exception e) {
			e.printStackTrace();
		}


		
	}
	
	
	

}

'오늘의 공부 & 기록' 카테고리의 다른 글

3월 15일 JDBC  (0) 2023.03.15
3월 14일 JDBC  (0) 2023.03.14
3월 10일  (0) 2023.03.10
3월 9일  (0) 2023.03.09
3월 8일  (0) 2023.03.08