본문 바로가기
강의/JSP 강의 정리

JSP 강의 정리 13일차

by 리드민 2022. 7. 22.
반응형

[1] 테스트 환경

hardware
cpu : intel i7-7700, gpu : intel hd 630, ram : ddr4 16GB, mainboard : samsung DB400S7A-Z51, secondary storage : 256GB SSD, 1TB HDD
OS
windows pro 64bits
software
jdk version 1.8.0_301
eclipse version 2021-09 (4.21.0)
apache-tomcat version 9.0.54

 

[2] 강의 정리

() sql 문장 예제

create table department(
    departmentCode number(3) primary key,
    departmentName nvarchar2(10) not null,
    departmentNumber char(13)
);

insert into department values(111, '컴퓨터학과', '02-111-2222');
insert into department values(222, '요리학과', '02-333-4444');
insert into department values(333, '경제학과', '02-555-6666');
insert into department values(444, '역사학과', '02-777-8888');

commit;

create table student(
    studentID number(6) primary key,
    name nvarchar2(7),
    age number(3),
    grade number(1),
    departmentCode number(3) REFERENCES department(departmentCode)
);

insert into student values(202101, '홍길동', 23, 4, 111);
insert into student values(202102, '성춘향', 21, 2, 222);
insert into student values(202103, '이순신', 23, 1, 333);
insert into student values(202104, '이몽룡', 25, 3, 444);
insert into student values(202105, '장보고', 20, 1, 111);
insert into student values(202106, '임꺽정', 24, 3, 444);
insert into student values(202107, '홍길순', 24, 4, 222);

commit;

 

() sql 문장 문법 & 예제

-- REFERENCES >> 참조키, 참조하라는 뜻
-- [외래키 이름] [데이터 타입(반드시 일치)] REFERENCES [참조테이블명] (참조컬럼명)

select * from department;

select * from student;

-- 홍길동 학생의 학과 전화번호 알아보기
select name, departmentName, departmentNumber
from student, department
where student.departmentcode = department.departmentcode
and name = '홍길동';
            
-- 산술연산자
select name, age + 1 from student;
select name, age - 1 from student;
select name, age * 2 from student;
select name, age / 2 from student;

-- 비교 연산자
select * from student where age = 23; --같다.
select * from student where age != 23; -- 같지 않다.
select * from student where age ^= 23; -- 같지 않다.
select * from student where age > 23; -- 크다.
select * from student where age < 23; -- 작다.
select * from student where age >= 23; -- 크거나 같다.
select * from student where age <= 23; -- 작거나 같다.

-- 논리 연산자
-- AND : 두 가지 조건을 만족해야 한다.
select * from student where age = 23 AND grade = 1;

-- OR : 두 가지 조건 중 하나만 만족해도 가능하다.
select * from student where age = 23 OR grade = 1;

-- NOT : 조건을 만족하지 않아야 한다.
select * from student where not age = 23;

-- 기타연산자(오라클에서만 쓰이는 연산자)
-- BETWEEN ~ AND : 특정 범위에 포함되는지 여부

select * from student where grade between 2 and 3;

-- IN : 비교값 목록에 포함되는지 여부 (OR이 여러개일 경우에 대체하는 연산자)
select * from student where grade in (2,3,4);

-- NOT IN : 비교값 목록에 비포함되는지 여부
select * from student where grade not in (2,3,4);

-- ORDER BY [컬럼명] : 정렬
-- ASC: 오름차순(생략하면 오름차순)
-- DESC : 내림차순

-- 학년을 기준으로 오름차순 정렬
select * from student order by grade asc;
select * from student order by grade;

-- 학년을 기준으로 내림차순 정렬
select * from student order by grade desc;

-- 학년을 오름차순으로 정렬하고 학년이 같으면 나이를 내림차순으로 정렬
select * from student order by grade ASC, age DESC;

 

() sql 문 예제

create table KGMember(
    id varchar2(10),
    pw varchar2(10),
    name nvarchar2(10),
    age number(3),
    phone char(13)
);

insert into KGMember values('hong', '1234', '홍길동', 20, 010-1111-2222);
insert into KGMember values('sung', '5678', '성춘향', 21, 010-1111-3333);
insert into KGMember values('lee', '1111', '이순신', 20, 010-1111-5555);
insert into KGMember values('jang', '2222', '장보고', 20, 010-1111-6666);

commit;

select * from KGMember;

 

() 이클립스 oracle sqlplus 연동

 

이클립스에서 다이나믹 웹 프로젝트를 생성한다.

 

프로젝트를 오른쪽 클릭한다.

Java Build Path > Libraries에서 Add External Jars... 클릭한다.

 

sqldeveloper > jdbc > lib 에서 ojdbc8.jar를 클릭한후 열기 버튼을 클릭한다.

 

 

추가가 완료되었다. Apply 버튼을 클릭한다.

 

 

Deployment Assembly에서 Add... 버튼을 클릭한다.

 

 

Java Build Path Entries를 클릭한다. Next>를 클릭한다.

 

 

Finish 버튼을 클릭한다.

 

 

추가된 것을 확인하고 Apply and Close 버튼을 클릭한다.

 

() JDBC 코드 예제

 

sql문(sqldeveloper 사용)

create table KGMember(
    id varchar2(10),
    pw varchar2(10),
    name nvarchar2(10),
    age number(3),
    phone char(13)
);

insert into KGMember values('hong', '1234', '홍길동', 20, 010-1111-2222);
insert into KGMember values('sung', '5678', '성춘향', 21, 010-1111-3333);
insert into KGMember values('lee', '1111', '이순신', 20, 010-1111-5555);
insert into KGMember values('jang', '2222', '장보고', 20, 010-1111-6666);

commit;

select * from KGMember;

 

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%!
		
		Connection conn;
		// Connection : DB와 연결성을 갖는 인터페이스
		Statement stmt;
		// Statement : SQL문을 실행하는 인터페이스
		ResultSet rs;
		// ResultSet : 조회결과 데이터를 갖는 인터페이스
		
		String driver = "oracle.jdbc.OracleDriver";
		// OracleDriver : JDBC 드라이버 클래스
		// 자바 응용프로그램에서 데이터베이스에 접속하려명
		// 드라이버를 프로그램에 등록하는 코드를 제공해야 한다.
		
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		// jdbc:oracle:thin 는 사용하는 JDBC드라이버가 thin타입을 의미한다.
		// (thin >> 순수하게 자바클래스로 바로 DB와 연결)
		// 1521 은 오라클 리스너의 포트번호
		// xe 는 서버이름
		
		String uid = "C##JSPUSER";
		String upw = "jsp123";
		
		String query = "select * from KGMember";
			
	%>
	
	<%
	
		try{
			
			Class.forName(driver);
			// Oracle 드라이버클래스를 메모리에 로딩한다.
			
			conn = DriverManager.getConnection(url, uid, upw);
			// DriverManager 클래스는 JDBC드라이버를 통해서 
			// Connection을 만드는 역할을 한다.
			// getConnection 메소드로 Connection 객체를 생성한다.
			
			stmt = conn.createStatement();
			// SQL문을 전송하고 처리된 결과를 자바프로그램쪽으로 전달해주는
			// Statement 객체를 생성한다.
			
			rs = stmt.executeQuery(query); // "select * KGMember"
			// 반환하는 결과를 ResultSet으로 받는다.
			
			while(rs.next()){
				// 다음 레코드가 있는지 판단해서 없으면 false
				// 있으면 true를 반환한 다음에 커서를 다음레코드로 이동시킨다.
				
				String id = rs.getString("id");
				// 컬럼의 값을 추출하는 getter 메소드를 통하여
				// 해당 컬럼 이름으로 데이터를 얻어올 수 있다.
				
				String pw = rs.getString("pw");
				String name = rs.getString("name");
				int age = rs.getInt("age");
				String phone = rs.getString("phone");
				
				out.print("아이디 : " + id + ", 비밀번호 : " + pw + ", 이름 : "
					+ name + ", 나이 : " + age + ", 핸드폰 : " + phone + "<br>");
				
			}
			
			
		}catch(Exception e){
			
			e.printStackTrace();
			
		}finally{
			
			// DB관련 처리작업이 완료된 다음에는 사용했던 객체들은 메모리에서 
			// 해제해주어야 한다. 순서는 최근에 사용했던 객체부터 거꾸로 올라가며 해제한다.
			
			try{
				
				if(rs != null){rs.close();}
				if(stmt != null)stmt.close();
				if(conn != null)conn.close();
				
			}catch(Exception e2){}
			
			
		}
	
	%>
	
	
	
</body>
</html>

 

결과가 다음과 같이 나온다.

 

() JDBC 코드 예제

데이터베이스에 새로운 데이터를 추가하는 예제이다. KGMember 테이블에 행을 추가하게 된다.

sql문

create table KGMember(
    id varchar2(10),
    pw varchar2(10),
    name nvarchar2(10),
    age number(3),
    phone char(13)
);

insert into KGMember values('hong', '1234', '홍길동', 20, 010-1111-2222);
insert into KGMember values('sung', '5678', '성춘향', 21, 010-1111-3333);
insert into KGMember values('lee', '1111', '이순신', 20, 010-1111-5555);
insert into KGMember values('jang', '2222', '장보고', 20, 010-1111-6666);

commit;

select * from KGMember;

 

KGMemberJoin.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<form action="joinCheck.jsp" method="post">
		
		아이디 : <input type="text" name="id" size="10"><br>
		비밀번호 : <input type="password" name="pw" size="10"><br> 
		이름 : <input type="text" name="name" size="10"><br>
		나이 : <input type="text" name="age" size="10"><br>
		핸드폰 : <input type="text" name="phone" size="15"><br>
		
		<input type="submit" value="KG회원가입">
		
	</form>
	
</body>
</html>

 

joinCheck.jsp

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%!
	
		Connection conn;
		Statement stmt;
		ResultSet rs;
		
		String driver = "oracle.jdbc.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String uid = "C##JSPUSER";
		String upw = "jsp123";
		
		
	%>
	
	<%
		request.setCharacterEncoding("UTF-8");
	
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String name = request.getParameter("name");
		String str = request.getParameter("age");
		int age = Integer.parseInt(str);
		String phone = request.getParameter("phone");
		
		String query = "insert into KGMember values('" + id +
				"', '" +pw + "', '" + name + "', " + age +
				", '" + phone + "')";
		
		try{
			Class.forName(driver);
			
			conn = DriverManager.getConnection(url, uid, upw);
			
			stmt = conn.createStatement();
			
			int su = stmt.executeUpdate(query);
			
			if(su == 1){
				System.out.println("insert 성공!!");
			}else{
				System.out.println("insert 실패!!");
			}
			
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if(stmt != null)stmt.close();
				if(conn != null)conn.close();
				
			}catch(Exception e2){}
		}
	%>
	
</body>
</html>

 

memberList.jsp

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%!
		
		Connection conn;
		Statement stmt;
		ResultSet rs;
		
		String driver = "oracle.jdbc.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String uid = "C##JSPUSER";
		String upw = "jsp123";
		String query = "select * from KGMember";
			
	%>
	
	<%
	
		try{
			
			Class.forName(driver);
			conn = DriverManager.getConnection(url, uid, upw);
			stmt = conn.createStatement();
			
			rs = stmt.executeQuery(query); // "select * KGMember"
			
			while(rs.next()){
				String id = rs.getString("id");
				String pw = rs.getString("pw");
				String name = rs.getString("name");
				int age = rs.getInt("age");
				String phone = rs.getString("phone");
				
				out.print("<p>아이디 : " + id + ", 비밀번호 : " + pw + ", 이름 : "
					+ name + ", 나이 : " + age + ", 핸드폰 : " + phone + "</p>");
				
			}
			
			
		}catch(Exception e){
			
			e.printStackTrace();
			
		}finally{
			try{
				if(rs != null){rs.close();}
				if(stmt != null)stmt.close();
				if(conn != null)conn.close();
				
			}catch(Exception e2){}
			
			
		}
	
	%>
	
	<a href="KGMemberJoin.html">KGMember 회원가입</a>
	
</body>
</html>
반응형

'강의 > JSP 강의 정리' 카테고리의 다른 글

JSP 강의 정리 15일차  (0) 2022.07.26
JSP 강의 정리 14일차  (0) 2022.07.25
JSP 강의 정리 12일차  (0) 2022.07.21
JSP 강의 정리 11일차  (0) 2022.07.20
JSP 강의 정리 10일차  (0) 2022.07.19