데이터베이스

DATABASE STEP 38 - JDBC Applications

2023. 3. 31. 13:59
728x90

★ JDBC 클래스

  • 모든 JDBC 작업은 Auto commit이 일어난다.
  • 1. Connection
    • DB 연결/해제
  • 2. Statement
    • 문장 > SQL 실행
    • a. Statement
      • 기본
    • b. PreparedStatement
      • 매개변수 특화
    • c. CallableStatement
  • 3. ResultSet
    • select 결과 참조 클래스

 

■ insert 실행 

  • 1. DB 연결
  • 2. SQL 실행
  • 3. DB 종료
private static void m1() {
		
		Connection conn = null;
		Statement stat = null;
		
		try {
			
			//1. 
			conn = DBUtil.open();
			
			if(!conn.isClosed()) {
				
				System.out.println("접속 성공");
				
				//2.
				//- 자바는 SQL을 모른다. > SQL을 문자열 취급한다.(아무의미없음)
				
				String sql = "insert into tblAddress (seq, name, age, gender, tel, address, regdate) values (seqAddress.nextVal, '아무개', 22, 'm', '010-5555-5555', '서울시 강남구 대치동 100', default)";
				
				// stat > SQL 실행 > 어느 DB + 어떤 계정으로 실행할지?
				stat = conn.createStatement();
				
				//SQL 실행
				//a. 반환값이 없는 쿼리 > select를 뺀 나머지
				//- int executeUpdate()
				//b. 반환값이 있는 쿼리 > select
				//- ResultSet executeQuery()
				
				//SQL Developer > Ctrl + Enter 동일!!
				int result = stat.executeUpdate(sql);
				
				if (result == 1) {
					System.out.println("SQL 실행 성공");
				}else {
					System.out.println("접속 실패");
				}
				
			} else {
				
				System.out.println("접속 실패");
				
			}
			
			//3. 
			conn.close();
			stat.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
}//m1

 

■ CREAT 문

  • 1. DB 연결
  • 2. SQL 실행
  • 3. DB 종료
private static void m2() {
		
		Connection conn = null;
		Statement stat = null;
		
		try {
			
			conn = DBUtil.open();
			stat = conn.createStatement();
			
			//String sql = "update tblAddress set age = age + 1 where seq = 1";
			//String sql = "delete from tblAddress where seq = 1";
			//String sql = "create sequence seqTemp";
			//String sql = "drop sequence seqTemp";
			//String sql = "drop table tblAddress";
			String sql = "create table tblAddress (\r\n"
					+ "    seq number primary key,\r\n"
					+ "    name varchar2(10) not null,\r\n"
					+ "    age number(3) not null check(age between 1 and 99),\r\n"
					+ "    gender char(1) not null check(gender in ('m', 'f')),\r\n"
					+ "    tel varchar2(15) not null,\r\n"
					+ "    address varchar2(300) not null,\r\n"
					+ "    regdate date default sysdate not null\r\n"
					+ ")";
			
			int result = stat.executeUpdate(sql);
			System.out.println(result);
			
			stat.close();
			conn.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
}

 

■ 사용자 입력 > insert

  • UI + SQL
  • 사용자 입력 > insert
  • ex) 게시판 글쓰기
private static void m3() {
		
		//UI + SQL
		//- 사용자 입력 > insert
		//- ex) 게시판 글쓰기
		
		Connection conn = null;
		Statement stat = null;
		
		Scanner scan = new Scanner(System.in);
		
		try {
			
			System.out.print("이름 : ");
			String name = scan.nextLine(); //varchar2
			
			System.out.print("나이 : ");
			String age = scan.nextLine();	//number
			
			System.out.print("성별(m,f): ");
			String gender = scan.nextLine();	//char
			
			System.out.print("전화번호 : ");
			String tel = scan.nextLine();		//varchar2
			
			System.out.print("주소: ");
			String address = scan.nextLine();	//varchar2
			
			conn = DBUtil.open();
			stat = conn.createStatement();
			
			String sql = String.format("insert into tblAddress (seq, name, age, gender, tel, address, regdate) values (seqAddress.nextVal, '%s', %s, '%s', '%s', '%s', default)", name, age, gender, tel, address);
			
			int result = stat.executeUpdate(sql);
			System.out.println(result);
			
			stat.close();
			conn.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
}

 

■ 단일값 반환 (1행 1열)

private static void m1() {
		
		//단일값 반환
		//- 결과셋 : 1행 1열

		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		
		try {
			
			conn = DBUtil.open();
			stat = conn.createStatement();
			
			//String sql = "select count(*) as cnt from tblInsa";
			String sql = "select name from tblInsa where num = 1010";
			
			rs = stat.executeQuery(sql);
			
			//RsultSet == 오라클 커서(Cursor)
			
			rs.next(); // 커서를 한줄 전진(이동)
			
			//현재 커서가 가르키고 있는 레코드 접근 > 특정 컬럼값을 읽기
			//-rs.getXXX();
			//int count = rs.getInt(1);
			//int count = rs.getInt("cnt");		//number > int
			//String count2 = rs.getString("cnt"); //number > String
			String name = rs.getString("name");
			
			//System.out.println("카운트 : " + count);
			//System.out.println("카운트 : " + count2);
			System.out.println(name);
			
			
			rs.close();
			stat.close();
			conn.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
}

 

■ 1행 N열

private static void m2() {
		
		// 결과셋 : 1행 N열
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		
		try {
			
			conn = DBUtil.open();
			stat = conn.createStatement();
			
			String sql = "select name, age, address from tblAddress where seq = 3";
			
			rs = stat.executeQuery(sql);
			
			if (rs.next()) {
				
				System.out.println("이름 : " + rs.getString("name"));
				System.out.println("나이 : " + rs.getString("age"));
				System.out.println("주소 : " + rs.getString("address"));
				
			} else {
				System.out.println("데이터가 없음");
			}
			
			rs.close();
			stat.close();
			conn.close();
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
}

 

■ N행 1열

private static void m3() {
		
		//결과셋 : N행 1열
		
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		
		try {
			
			conn = DBUtil.open();
			stat = conn.createStatement();
			
			String sql = "select name from tblInsa order by name";
			
			//60명 레코드 
			rs = stat.executeQuery(sql);
			
			/*
			 * rs.next(); System.out.println(rs.getString("name"));
			 * 
			 * rs.next(); System.out.println(rs.getString("name"));
         	 * 		
         	 * rs.next(); System.out.println(rs.getString("name"));
			 */
			
			while (rs.next()) {
				System.out.println(rs.getString("name"));
			}
			//Resultset > 커서가 어디있는지??
			
			
			rs.close();
			stat.close();
			conn.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
}

■ N행 N열

private static void m4() {
		
		//결과셋 : N행 N열
		

		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		
		try {
			
			conn = DBUtil.open();
			stat = conn.createStatement();
			
			//사용자에게 부서 입력 > 부서 명단 출력
			Scanner scan = new Scanner(System.in);
			
			System.out.print("부서명: ");
			String buseo = scan.nextLine();
			
			String sql = String.format("select * from tblInsa where buseo = '%s'", buseo);
			
			rs = stat.executeQuery(sql);
			
			System.out.println("==============================================");
			System.out.println("                     " + buseo);
			System.out.println("===============================================");
			System.out.println("[번호]\t[이름]\t[직위]\t     [급여]\t[수당]\t");
			
			while(rs.next()) {
				
				System.out.printf("%s\t%s\t%s\t%,12d\t%,d\n"
									, rs.getString("num")
									, rs.getString("name")
									, rs.getString("jikwi")
									, rs.getInt("basicpay")
									, rs.getInt("sudang"));
				
			}
			
			rs.close();
			stat.close();
			conn.close();
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
}

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'데이터베이스' 카테고리의 다른 글

DATABASE STEP 37 - JDBC  (0) 2023.03.30
DATABASE STEP 36 - ACCOUNT  (0) 2023.03.30
DATABASE STEP 35 - INDEX  (0) 2023.03.30
DATABASE STEP 34 - TRIGGER  (0) 2023.03.29
DATABASE STEP 33 - STORED FUNCTION  (0) 2023.03.29
'데이터베이스' 카테고리의 다른 글
  • DATABASE STEP 37 - JDBC
  • DATABASE STEP 36 - ACCOUNT
  • DATABASE STEP 35 - INDEX
  • DATABASE STEP 34 - TRIGGER
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • java
  • React
  • 웹개발
  • 정보처리기사
  • ajax
  • 프론트엔드
  • jsp
  • 자바
  • 앱개발자
  • IT개발자
  • 웹개발자
  • IT자격증
  • html
  • 백준
  • 웹페이지
  • 개발블로그
  • JavaScript
  • 알고리즘
  • 정보처리기사필기
  • 개발자
  • css
  • IT자격증공부
  • jquery
  • DB
  • DBA
  • it
  • 백엔드
  • 코딩테스트
  • 정보보안전문가
  • 데이터베이스

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
DATABASE STEP 38 - JDBC Applications
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.