💡 학습 목표
|
SQLException 다루기
SQLException은 JDBC에서 발생할 수 있는 일반적인 예외입니다. 이 예외는 데이터베이스와의 통신 중에 발생하는 오류를 나타냅니다. SQLException은 다양한 속성과 메서드를 제공하여 예외에 대한 상세한 정보를 제공합니다.
- 주요 속성 및 메서드:
- getErrorCode(): 데이터베이스 벤더가 제공하는 특정 오류 코드를 반환합니다.
- getSQLState(): SQLState 코드를 반환합니다. 이 코드는 표준 SQL 상태 코드를 나타냅니다.
- getMessage(): 예외 메시지를 반환합니다.
- getNextException(): 체인된 예외를 반환합니다.
SQL 작성
select * from user;
-- DML DCL DDL
-- 컬럼 추가하는 쿼리를 만들어 보자.
drop table user;
create table users(
id int auto_increment primary key,
username varchar(100) not null unique,
password varchar(100) not null
);
desc users;
alter table users add column email varchar(100) null;
-- 이메일에다가 unique 제약을 추가해보자.
alter table users add constraint unique_email unique(email);
package com.tenco.quiz.ver4;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class LoginExample {
// 개발 테스틀 위한 로깅 처리 및 로그
private static final Logger LOGGER = Logger.getLogger(LoginExample.class.getName());
public static void main(String[] args) {
// DataSource 를 활용한 Connection 객체를 사용하자.
try {
// HikariCP 가 담김
Connection conn = DBConnectionManager.getConnection();
// username, password를 받아서 확인 해야 한다.
Scanner scanner = new Scanner(System.in);
System.out.print("username 을 입력하세요 : ");
String username = scanner.nextLine();
System.out.print("password 을 입력하세요 : ");
String password = scanner.nextLine();
if(authenticateUser(conn, username, password)) {
System.out.println("로그인 성공 ! ");
} else {
System.out.println("로그인 실패 - username 과 password 를 확인해주세요 ");
}
} catch (SQLException e) {
LOGGER.log(Level.INFO, "MySQl 연결 오류");
e.printStackTrace();
}
}
private static boolean authenticateUser(Connection conn, String username, String password) {
String query = " select * from users where username = ? and password = ? ";
boolean result = false;
try {
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
result = rs.next();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
} // end of class
'자료구조(Data Structure) > JDBC' 카테고리의 다른 글
JDBC 실습 예제 - 10 (0) | 2024.06.27 |
---|---|
JDBC 성능 최적화 - 8 (0) | 2024.06.27 |
JDBC를 활용한 CRUD 와 SOLID 원칙 - 7 (0) | 2024.06.14 |
JDBC 트랜잭션 관리와 배치 처리 - 6 (0) | 2024.06.13 |
JDBC 데이터 기본 조작(CRUD) - 5 (0) | 2024.06.13 |