JDBC Connect Basic

  • 전체적인 틀은 Oracle JDBC를 위한 DBConnect와 동일
static final String MYSQL_URL="jdbc:mysql://localhost:3306/coffee?serverTimezone=Asia/Seoul";
	
String driver="com.mysql.cj.jdbc.Driver";

//getConnection클래스
DriverManager.getConnection(MYSQL_URL, "rheemingyu", "a1234");
  • url은 jdbc:mysql://localhost:3306/(스키마 명) 이며 시간 생성 시 현지 시간에 맞추기 위해 serverTimezone을 Asia/Seoul로 설정
  • driver는 com.mysql.cj.jdbc.Driver
  • getConnection 클래스 아래 Connection 객체 생성 시 위에서 설정한 url, mysql 사용자 명, 비밀번호를 새로 입력

MySQL Stub

Command Conspectus

  • 전반적 명령어는 Oracle과 동일
create table simpleGuest(num smallint auto_increment primary key,
image varchar(20),nick varchar(20),pass varchar(20),story varchar(1000),
writeday datetime);
  • mysql의 자료형은 Oracle과 상이함

    1) 숫자 자료형 : TinyInt ~ BigInt (대체로 int, SmalIint 사용), Decimal(M,D) Numeric (M자리 정수, D자리 소수점), Float, Double 등

    2) 문자 자료형 : Char(M) (고정 길이), VarChar(M) (유동 길이)

    3) 날짜 자료형 : Date (연월일), DateTime, TimeStamp (시분초까지), Time, Year 등

  • 시퀀스 값에 primary key 등 제약 조건 (ex: pk_sawon_num, ck_sawon_score 등)은 동일

Giving Sequence

  • 그러나 시퀀스 개념은 부재 (auto_increment 제약 조건 부여하여 시퀀스가 자동 증가하게 만듦)
  • 따라서 auto_increment 제약 조건이 부여된 시퀀스 값은 설정 불가
insert into simpleGuest (name,pw,image,story) values('민규','1234','경로','내용');
  • 부분적 컬럼 insert로 시퀀스 컬럼을 제외하고 insert 하는 방법
insert into simpleGuest values(null,'민규','1234','경로','내용');
  • 전체 insert 시 시퀀스 컬럼 값을 null로 주어 auto_increment가 자동 시퀀스 부여하는 방법

Present Time

insert into simpleGuest (writeday) values(now());
  • 현재 시각을 나타내는 명령어는 now(), sysdate() 등이 있음

CRUD within JSP Additional

Authentification Object

public class SimpleGuestDao {

	DBConnect db=new DBConnect();

	public boolean authentification(String num,String pass) {
		
		boolean flag=false;
		
		Connection conn=db.getConnection();
		PreparedStatement pstmt=null;
		ResultSet rs=null;
		
		String sql="select * from simpleGuest where num=? and pass=?";
		
		try {
			pstmt=conn.prepareStatement(sql);
			
			pstmt.setString(1, num);
			pstmt.setString(2, pass);
			rs=pstmt.executeQuery();
			
			if(rs.next())
				flag=true;
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			db.dbClose(rs, pstmt, conn);
		}
		
		return flag;
	}
}
  • CRUD DAO에서 비밀 번호를 통해 자신을 인증하는 기능의 메서드

  • 반환 값의 자료형은 boolean (조건문에서 true, false로 작동 지속 및 중지 결정)

    1) 두 개의 컬럼 값(시퀀스, 비밀 번호)에 해당하는 데이터를 조회

    2-1) 비밀 번호가 맞으면 시퀀스에 해당하는 데이터 조회, 즉 rs.next() 객체가 1회 이상 true 반환하여 메서드의 최종 반환 값(flag)이 true

    2-2) 비밀 번호가 틀리면 데이터가 조회되지 않으므로 rs.next() 객체는 항상 false 반환하여 메서드의 최종 반환 값도 false

  • 이 메서드를 이용하여 비밀 번호의 참, 거짓을 판별 가능

profile
초보개발자

0개의 댓글