자바와 DB를 연결해주는 라이브러리
MVC 패턴에서 DB와 연결을 담당하는 Dao 클래스에 DB 연동을 위한 코드를 작성
public class Dao {
// [1] 싱글톤 선언 =====================================================
private Dao() {
// [] Dao 객체 생성과 동시에 DB 연동 시작을 위한 메소드 실행
connectDB();
}
private static final Dao instance = new Dao();
public static Dao getInstance() { return instance; }
// [2] DB 연동에 필요한 정보 작성 ========================================
// [2.1] DB연동 경로와 DB명을 선언
// 외부 DB 이용 시 [ 경로(localhost) : 포트(3306) / DB명칭 ] 작성
private String db_url = "jdbc:mysql://localhost:3306/DBName";
// [2.2] db user name 작성
private String db_user = "root";
// [2.3] db user password 작성
private String db_pw = "1234";
// DB연동 결과를 저장하기 위한 인터페이스
// 자세한 설명은 하단 참고
Connection conn;
// [3] DB 연동 함수 ================================================
public void connectDB() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
// [3.1] DB 연동 클래스(구현체) DriverManager
// [3.2] DB 연동 함수 : .getConnection( 주소 , 계정 , 비밀번호)
conn = DriverManager.getConnection(db_url, db_user, db_pw);
} catch (ClassNotFoundException e) {
System.out.println("[경고] MySQL 드라이버 로드 실패 "+e);
} catch (SQLException e) {
System.out.println("[경고] DB 연동 실패 " + e);
}
} // func end
} // class end
① Connection
② DriverManager
③ .getConnection(db_url, db_user, db_pw)
④ PreparedStatement ps = conn.prepareStatement(sql);
① .execute();
② .executeQuery();
③ .executeUpdate();
④ .set타입(?번째, 변수);
① rs.next();
② rs.get타입("속성명" or colNo);
public class Dao {
// 1) User 테이블 insert : SQL 고정
public boolean userInsert() {
// SQL 작성
String sql = "insert into user( uname, uage ) values('유재석',40 )";
try {
// SQL 기재
PreparedStatement ps = conn.prepareStatement(sql);
// SQL 실행
int count = ps.executeUpdate(); // SQL 실행 결과 insert 레코드 수를 int로 반환
// SQL 결과 확인
System.out.println(count);
return true;
} catch (SQLException e) {
System.out.println("[경고] 예외발생 " + e);
}
return false;
} // func end
// 2) User 테이블 insert : 매개변수 활용
public boolean userInsert2(String uname, int uage) {
try {
// SQL 작성
String sql = "insert into user( uname, uage ) values( ? , ? )";
// SQL 기재
PreparedStatement ps = conn.prepareStatement(sql);
// SQL에 매개변수 대입하기!! ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
// ps.set타입( ?순서, 변수)
ps.setString(1, uname);
ps.setInt(2, uage);
// SQL 실행
int count = ps.executeUpdate();
// SQL 결과 확인
if (count >= 1) return true;
return false;
} catch (SQLException e) {
System.out.println("[예외발생] " + e);
}
return false;
} // func end
// 3) Select
// User table 을 select
public void userSelect() {
try {
// SQL 작성
String sql = "select * from user;";
// SQL 기재
PreparedStatement ps = conn.prepareStatement(sql);
// SQL 매개변수 대입 >> 없으므로 생략
// SQL 실행 ☆★☆★☆★☆★☆★☆★☆★
// select >> .executeQuery() >> ResultSet 타입
ResultSet rs = ps.executeQuery(); // 조회결과 조작 인터페이스, [import java.sql] 주의!!
// SQL 결과 확인
// int rowNo = 0;
while (rs.next()){ // rs.next() : 다음 레코드
System.out.printf("번호 : %d \t 이름 : %s \t 나이 : %d \n",rs.getInt(1),rs.getString(2), rs.getInt(3));
}
} catch (Exception e) {
System.out.println("[예외발생] " + e);
}
} //func end
} // class end