๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/JDBC

(32) [JDBC] 3์ผ์ฐจ : JDBC(Java Data Connectivity)

by ๋”ฐ๊ถˆ 2024. 4. 3.

 

 

CallableStatement

PreparedStatement ํ•˜์œ„ ์ธํ„ฐํŽ˜์ด์Šค. SQL์ €์žฅ ํ”„๋ฆฌ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด. ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ ๊ตฌ๋ฌธ์—๋Š” ๊ฒฐ๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๋Š” ํ˜•ํƒœ์™€ ๊ฒฐ๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๋‘๊ฐ€์ง€ ํ˜•ํƒœ๊ฐ€ ์žˆ๋‹ค. ๋‘ ํ˜•ํƒœ ๋ชจ๋‘ IN ๋งค๊ฐœ๋ณ€์ˆ˜(์ž…๋ ฅ), OUT ๋งค๊ฐœ๋ณ€์ˆ˜(์ถœ๋ ฅ) ๋˜๋Š” INOUT ๋งค๊ฐœ๋ณ€์ˆ˜(์ž…์ถœ๋ ฅ)๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์–ด์ง€๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋ณ€์ˆ˜ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๋ฉฐ ?๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ €์žฅ์œ„์น˜๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

 

 

 

 

ScoreDAOImpl

ํ”„๋ฆฌ์‹œ์ € ํ˜ธ์ถœ ํ˜•์‹ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ฉ”์†Œ๋“œ 

//๋ฐ์ดํ„ฐ ์ž…๋ ฅ
	@Override
	public int insertScore(ScoreDTO dto) throws SQLException {
		int result = 0;
		
		CallableStatement cstmt = null;
		String sql;
		
	
		try {
			
			// 1) ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ฟผ๋ฆฌ ์ž‘์„ฑ
			// ์ž๋ฐ”์—์„œ ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ• : CALL๋กœ ํ”„๋กœ์‹œ์ € ์‹คํ–‰ 
			sql = "{CALL INSERT SCORE(?,?,?,?,?,?)   }"; 
						
			// 2) ์ฟผ๋ฆฌ๋ฅผ ์ธ์ž๋กœ CallableStatement ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
			cstmt = conn.prepareCall(sql);
			
			// 3) setter ๋ฅผ ์ด์šฉํ•˜์—ฌ ? ์— ๊ฐ’ ํ• ๋‹น (์ˆœ์„œ ์ง€์ผœ์„œ ๋„ฃ์–ด์•ผ ํ•จ)
			cstmt.setString(1,dto.getHak());
			cstmt.setString(2,dto.getName());
			cstmt.setString(3,dto.getBirth());
			cstmt.setInt(4,dto.getKor());
			cstmt.setInt(5,dto.getEng());
			cstmt.setInt(6,dto.getMat());
			
			// 4) ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค
			cstmt.executeUpdate(); // ๋ฐ˜ํ™˜๊ฐ’์€ ํ”„๋กœ์‹œ์ € ์‹คํ–‰ ์œ ๋ฌด 
			result=1;
			
		} catch (SQLException e) {
			throw e; // ์˜ˆ์™ธ ๋˜์ง€๊ธฐ
		} finally {
			// 5) ๊ฐ์ฒด close
			DBUtil.close(cstmt);
		}
		
		return result;
	}

 

 

 

 

ScoreUI
๋ฐ์ดํ„ฐ ๋“ฑ๋ก  UI, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ 

	protected void insert() {
		System.out.println("\n์ž๋ฃŒ ๋“ฑ๋ก...");
		
		ScoreDTO dto = new ScoreDTO();
		
        
		try {
			System.out.print("ํ•™๋ฒˆ?");
			dto.setHak(br.readLine());
			System.out.print("์ด๋ฆ„?");
			dto.setName(br.readLine());
			System.out.print("์ƒ๋…„์›”์ผ?");
			dto.setBirth(br.readLine());
			System.out.print("๊ตญ์–ด?");
			dto.setKor(Integer.parseInt(br.readLine()));
			System.out.print("์˜์–ด?");
			dto.setEng(Integer.parseInt(br.readLine()));
			System.out.print("์ˆ˜ํ•™?");
			dto.setMat(Integer.parseInt(br.readLine()));
		
			dao.insertScore(dto);
			
			System.out.println("๋“ฑ๋ก์™„๋ฃŒ");
		
		} catch (NumberFormatException e) {
			System.out.println("์—๋Ÿฌ= ์ ์ˆ˜๋Š” ์ˆซ์ž๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.");
	
		} catch (SQLIntegrityConstraintViolationException e) {
			//NOT null ๋“ฑ์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ• ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ
			//๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด 
			if(e.getErrorCode()==1) {
				System.out.println("์—๋Ÿฌ-๋“ฑ๋ก๋œ ํ•™๋ฒˆ์ž…๋‹ˆ๋‹ค.");
			}else if(e.getErrorCode()==1400) { // INSERT NOT NULL ์ œ์•ฝ ์œ„๋ฐ˜ 
				System.out.println("์—๋Ÿฌ - ํ•„์ˆ˜ ์ž…๋ ฅ ์‚ฌํ•ญ์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.");
			}else {
				System.out.println(e.toString());
			}
			
		
		} catch (SQLDataException e) {
			
			if(e.getErrorCode()==1840 || e.getErrorCode()==1861) {
				System.out.println("์—๋Ÿฌ-๋‚ ์งœ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
			}else{
				System.out.println(e.toString());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		
	}

 

 

 

ScoreDAOImpl

ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๋ฉ”์†Œ๋“œ 

//์‚ญ์ œ
	@Override
	public int deleteScore(String hak) throws SQLException {
		
		int result = 0;
		CallableStatement cstmt =null;
		String sql;
		
		//
		
		try {
			sql="{Call deleteScore(?)}";
			cstmt=conn.prepareCall(sql);
			cstmt.executeUpdate(sql);
			cstmt.setString(1, hak);
			
			result = 1;
			
		} catch (SQLException e) {
			throw e;
		}finally {
			DBUtil.close(cstmt);
		}
		
		return result;
	}

 

 

 

ScoreUI

๋ฐ์ดํ„ฐ ์‚ญ์ œ UI

	//๋ฐ์ดํ„ฐ ์‚ญ์ œ 
	protected void delete() {
	    System.out.println("\n์ž๋ฃŒ ์‚ญ์ œ...");

	    String hak;

	    try {
	        System.out.println("์‚ญ์ œํ•  ํ•™๋ฒˆ?");
	        hak = br.readLine();
	        
	        dao.deleteScore(hak);
	        System.out.println("๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");

	    } catch (SQLException e) {
	        if (e.getErrorCode() == 20100) {
	            System.out.println(e.getMessage());
	            // 20100 : ํ”„๋กœ์‹œ์ €์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๋ฐœ์ƒ์‹œํ‚จ ์—๋Ÿฌ ์ฝ”๋“œ
	        } else {
	            e.printStackTrace();
	        }
	    } catch (Exception e) {
	        e.printStackTrace();
	    }

	    System.out.println();
	}

'๐Ÿ’ป > JDBC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

(33) [JDBC] 4์ผ์ฐจ : JDBC(Java Data Connectivity)  (0) 2024.04.03
(31) [JDBC] 2์ผ์ฐจ : JDBC(Java Data Connectivity)  (0) 2024.04.03
(30) [JDBC] 1์ผ์ฐจ : JDBC(Java Data Connectivity)  (0) 2024.04.02