반응형
05-14 05:47
Today
Total
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
관리 메뉴

개발하는 고라니

[JSP] JDBC 본문

Web/JSP-Servlet

[JSP] JDBC

조용한고라니 2021. 4. 21. 12:27
반응형

JDBC (Java Database Connectivity)

  • Java를 이용해 Database를 사용하는 프로그램
  • Database를 이용하기 위한 API를 구해야 한다.

JDBC API

  • Java 어플리케이션과 DBMS가 직접적으로 연결해 사용할 수 있는데, 이를 간접적으로 연결해서 사용하게 하는 API

DBC (Database Connectivity)

DBMS은 우리가 알고있듯 Oracle, MS SQL, MySQL ... 여러 가지가 있는데, 만일 Oracle을 사용하다가 MS SQL로 마이그레이션을 했다고 가정했을 때, Oracle에 매핑되어있는 함수와 MS SQL에 매핑되어있는 함수가 다르기 때문에 코드를 전부 수정해야할 수도 있다. 이러한 문제점을 해결하기 위해 DBMS와 직접 연결하지 않고 중간에 API(JDBC)를 하나 더 둔다.

 

JDBC를 이용하기 위한 클래스

Oracle JDBC는 하단 링크에서 다운 받을 수 있다. 나는 Oracle 18c를 사용하기 때문에 ojdbc8.jar를 사용한다.

www.oracle.com/database/technologies/appdev/jdbc-downloads.html

 

지금은 Web에서 사용하기 전에 Console에서 먼저 테스트를 해보기 위해 Library를 추가하자. 먼저,

Project 우클릭 - Bulid Path - Configuration - Add External JARs - ojdbc.jar 추가

JDBC 사용하기

  1. DriverManager
  2. Connection
  3. Statement
  4. ResultSet

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection con = DriverManager.getConnection(null);
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM MEMBER");
			
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

DB에서 MEMBER 값 꺼내오기

	public static void main(String[] args) {
		
		String url = "jdbc:oracle:thin: 주소 ";
		String sql = "SELECT * FROM MEMBER";
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection con = DriverManager.getConnection(url, "ID", "PASSWORD");
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery(sql);
			
			while(rs.next()) {
				System.out.println("닉네임: " + rs.getString("NICNAME") + ", ID : " + rs.getString("ID"));
			}
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

사용자 입력받아 데이터 조회

닉네임을 입력받아 DB에서 조회해보자.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;


public class JDBCProgramming {

	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.print("nicname: ");
		String nic = br.readLine();
		
		String url = "jdbc:oracle:thin:주소";
		//String sql = "SELECT * FROM MEMBER WHERE NICNAME = '" + nic + "'";
		String sql = String.format("SELECT * FROM MEMBER WHERE NICNAME = '%s'", nic);
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection con = DriverManager.getConnection(url, "ID", "PASSWORD");
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery(sql);
			
			boolean find = false;
			
			while(rs.next()) {
				find = true;
				System.out.println("닉네임: " + rs.getString("NICNAME") + ", ID : " + rs.getString("ID"));
			}
			
			System.out.println(!find? "검색된 데이터가 없습니다.":"");
			
			rs.close();
			st.close();
			con.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

 

반응형

'Web > JSP-Servlet' 카테고리의 다른 글

[JSP/Servlet] 파일 업로드 및 저장  (3) 2021.05.26
[JSP] Ajax로 JSON 전송  (0) 2021.05.06
[JSP] JSP  (0) 2021.04.14
Comments