오늘의 노래!!! 내일 곡 - 못된송아지 엉덩이에 뿔(현수짱 남친 !)
- 아티스트
- NewJeans
- 앨범
- NewJeans 1st EP 'New Jeans'
- 발매일
- 2022.08.01
[0]DB와 인텔리제이 연동(DBC클래스) -- 고정!!!
public class DBC {
//기본구조
1.필드
2.생성자
3.메소드
public static Connection DBConnect(){
// DB에 접속정보를 저장하기 위한 Connection타입의 객체 con 선언
Connection con = null;
// 접속할 DB의 주소 정보
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //xe버전 정보!!
// DB에 접속할 정보(아이디, 비번)
String user = "PC1";
String password = "1111";
// DB 파일 접속을 위한 정보 (forName)에 빨간줄에 try.catch 선택 하면 문구생김
// 오류가 발생하지 않을겨우 (try문) 실행
try {
// ojdbc8 파일을 현재 프로젝트 적용
Class.forName("oracle.jdbc.driver.OracleDriver");
// 오라클에 접속할 계정 정보 con에 등록 >> 빨간줄에(다른오류에 대해서 새로운 catch문 추가)
con = DriverManager.getConnection(url, user,password);
//con = DriverManager.getConnection(oracle.jdbc.driver.OracleDriver, PC1,1111); 도 가능!!
System.out.println("DB 접속 성공!");
// ↓ 이 오류가 발생 했을 경우 실행 오류발생시(catch)문 실행
} catch (ClassNotFoundException e) {
// 파일 존재 없거나 Class.Name을 잘못 입력할경우
System.out.println("DB접속 실패 : 드라이버 로딩실패!");
throw new RuntimeException(e);
// ↓ 계정 정보가 잘못될 경우
} catch (SQLException e) {
// url, user, password를 잘못입력할 경우
System.out.println("DB접속 실패 : 접속 정보 확인!");
throw new RuntimeException(e);
}
return con;
}
}
[1]DB와 인텔리제이 연동(SQL클래스)
// CRUD만 작성하자
public class CRUD_SQL {
// DB에 접속하기 위한 Connection 객체 con
Connection con;
// SQL문을 DB에 전달위한 Statement 객체 stmt
Statement stmt;
// 검색 조회한 결과를 저장하는 ResultSet 객체 rs
ResultSet rs;
// 6개 작성 해야한다!!, 이름은 아무렇게 작성 가능
// [1] DB접속 : connect()
// [1] DB접속 : connect() 기본 작성중에 필수
// 6개 작성 해야한다!!, 이름은 아무렇게 작성 가능
// [1] DB접속 : connect()
public void connect() {
con = DBC.DBConnect();
}
// [2] C삽입 : insert() -- 순서 기억하기
public void insert() {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = "INSERT INTO JDBCT VALUES('JAVA', 11)";
// (3) 실행단계
//실행 : stmt.executeUpdate(sql)
//결과값 저장 : int result
int result = stmt.executeUpdate(sql);
// 1 행 이(가) 삽입되었습니다.
System.out.println("result 값 : " + result);
// (4) 확인단계
if (result > 0) {
System.out.println("성공!");
} else {
System.out.println("실패!");
}
// (5) 해제단계
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// [3] R조회 : select -- sql문 선언과 rs선언 while문은으로 반복문 선언 파악하기!!!
// [3] R 조회 : select()
public void select() {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = " SELECT * FROM JDBCT";
// (3) 실행단계
// 실행 : stmt.executeQuery(sql)
// 결과값 저장 : rs
rs = stmt.executeQuery(sql);
// (4) 확인단계
// rs.next() : boolean 타입 데이터
// 레코드가 존재할때 true, 아니면 false
while(rs.next()){
System.out.println("Data1 : " + rs.getString(1));
System.out.println("Data2 : " + rs.getInt(2));
System.out.println();
}
// (5) 해제단계
stmt.close();
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// [4] U수정 : update()
// [4] U 수정 : update()
public void update () {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = "UPDATE JDBCT SET DATA2 = 8 WHERE DATA1 = 'JAVA'";
// (3) 실행단계
//실행 : stmt.executeUpdate(sql)
//결과값 저장 : int result
int result = stmt.executeUpdate(sql);
// 1 행 이(가) 삽입되었습니다.
System.out.println("result 값 : " + result);
// (4) 확인단계
if (result > 0) {
System.out.println("성공!");
} else {
System.out.println("실패!");
}
// (5) 해제단계
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// [5] D삭제 : delete()
// [5] D 삭제 : delete()
public void delete() {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = "DELETE FROM JDBCT WHERE DATA1 = 'ORACLE'";
// (3) 실행단계
//실행 : stmt.executeUpdate(sql)
//결과값 저장 : int result
int result = stmt.executeUpdate(sql);
// 1 행 이(가) 삽입되었습니다.
System.out.println("result 값 : " + result);
// (4) 확인단계
if (result > 0) {
System.out.println("성공!");
} else {
System.out.println("실패!");
}
// (5) 해제단계
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// [6] DB접속 해체 : conClose() 해체 확인
// [6] DB접속 해체 : conClose()
public void conClase () {
try {
con.close();
System.out.println("DB 접속 해체!!");
} catch (SQLException e) {
//e.printStackTrace(); 이클립스에서만 나오는 메세지
// 오류가 발생한 경로 찾아준다!!
throw new RuntimeException(e);
} catch (NullPointerException e) {
System.out.println("접속중이 아님!");
throw new RuntimeException(e); // == e.printStackTrace();
}
}
// [7] EMP 테이블 조회
// selectEMP()
// EMP 테이블 조회!
public void selectEMP() {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = "SELECT * FROM EMP";
// (3) 실행단계
rs = stmt.executeQuery(sql);
// (4) 확인단계
while(rs.next()){
System.out.print("EMPNO : " + rs.getInt(1)+'|');
System.out.print("ENAME : " + rs.getString(2)+'|');
System.out.print("JOB : " + rs.getString(3)+'|');
System.out.print("MGR : " + rs.getInt(4)+'|');
System.out.print("HIREDATE : " + rs.getString(5).substring(0,10)+'|');
System.out.print("SAL : " + rs.getInt(6)+'|');
System.out.print("COMM : " + rs.getInt(7)+'|');
System.out.print("DEPTNO : " + rs.getInt(8)+'|');
System.out.println();
}
// (5) 해제단계
stmt.close();
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
[2]DB와 인텔리제이 연동(Main클래스)
public class CRUD_Main {
public static void main(String[] args) {
// CRUD 객체 선언
CRUD_SQL crud = new CRUD_SQL();
// CRUD 작업 시작!!!!
crud.connect(); // DB접속
crud.insert(); // DB삽입
crud.select(); // DB조회
crud.conClase(); //DB접속 해체
}
}
[3]DB와 인텔리제이 연동2(NAVER_MEMBER클래스)
public class NaverMember{
// 필드
// NAVER 테이블을 참고 해서 클래스를 작성하시오.
//필드
private String nId;
private String nPw;
private String nName;
private int nAge;
private String nGender;
private String nEmall;
private String nPhone;
// 생성자
public NaverMember() {
}
// 메소드
//메소드
public String getnId() {
return nId;
}
public void setnId(String nId) {
this.nId = nId;
}
public String getnPw() {
return nPw;
}
public void setnPw(String nPw) {
this.nPw = nPw;
}
public String getnName() {
return nName;
}
public void setnName(String nName) {
this.nName = nName;
}
public int getnAge() {
return nAge;
}
public void setnAge(int nAge) {
this.nAge = nAge;
}
public String getnGender() {
return nGender;
}
public void setnGender(String nGender) {
this.nGender = nGender;
}
public String getnEmall() {
return nEmall;
}
public void setnEmall(String nEmall) {
this.nEmall = nEmall;
}
public String getnPhone() {
return nPhone;
}
public void setnPhone(String nPhone) {
this.nPhone = nPhone;
}
@Override
public String toString() {
return "NaverMember[" +
"nId=" + nId +
", nPw=" + nPw +
", nName=" + nName +
", nAge=" + nAge +
", nGender=" + nGender +
", nEmall=" + nEmall +
", nPhone=" + nPhone +
']';
}
}
[4]DB와 인텔리제이 연동2(NAVER_CRUD클래스)
public class NAVER_CRUD{
Connection con;
Statement stmt;
ResultSet rs;
// '?'을 문자로 인식
PreparedStatement pstmt;
// 문자 '?' 로 인식하는 거 중요
// DB 연결 --- 중요!!!
public void NAVERDBConnection() {
// DBC클래스의 메소드의 리턴값을 con에 대입
con = NAVER_DBC.NAVERDBConnection();
}
// insert
public void insert() {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = "INSERT INTO NAVERT VALUES('!@2#$','1234', '홍길동',20,'남','naver','01027512064' )";
// (3) 실행단계
//실행 : stmt.executeUpdate(sql)
//결과값 저장 : int result
int result = stmt.executeUpdate(sql);
// (4) 확인단계
if (result > 0) {
System.out.println("성공!");
} else {
System.out.println("실패!");
}
// (5) 해제단계
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// select()
public void select() {
try {
stmt = con.createStatement();
String sql = " SELECT * FROM NAVERT";
rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.print(" NID : " + rs.getString(1));
System.out.print(" NPW : " + rs.getString(2));
System.out.print(" NNAME : " + rs.getString(3));
System.out.print(" NAGE : " + rs.getInt(4));
System.out.print(" NGENDER : " + rs.getString(5));
System.out.print(" NEMALL : " + rs.getString(6));
System.out.print(" NPHOE : " + rs.getString(7));
System.out.println();
}
stmt.close();
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// update()
public void update() {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = "UPDATE NAVERT SET NGENDER = '?' WHERE NID = '?'";
// (3) 실행단계
//실행 : stmt.executeUpdate(sql)
//결과값 저장 : int result
int result = stmt.executeUpdate(sql);
// (4) 확인단계
if (result > 0) {
System.out.println("성공!");
} else {
System.out.println("실패!");
}
// (5) 해제단계
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// delete()
public void delete() {
// (1) 준비
try {
stmt = con.createStatement();
// (2) 작성
String sql = "DELETE FROM NAVERT WHERE NID = ?";
// (3) 실행단계
//실행 : stmt.executeUpdate(sql)
//결과값 저장 : int result
int result = stmt.executeUpdate(sql);
// (4) 확인단계
if (result > 0) {
System.out.println("삭제 성공!");
} else {
System.out.println("삭제 실패!");
}
// (5) 해제단계
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// conClass()
public void conClase() {
try {
con.close();
System.out.println("DB 접속 해체!!");
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (NullPointerException e) {
System.out.println("접속중이 아님!");
throw new RuntimeException(e); // == e.printStackTrace();
}
}
// memberJoin 메소드 main 출력할때 한번에 출력을 하기 위해서 사용하는 메소드 각 타입별로 넣는것이 중요
public void memberJoin(NaverMember member) {
String sql = "INSERT INTO NAVERT VALUES(?,?,?,?,?,?,?)";
try {
pstmt = con.prepareStatement(sql);
// 숫자 선언시 위에 있는 sql문 ?순서와 같이 해줘야 한다
// sql문의 첫번쨰 '?'에 member 객체의 nId값(getnId())를 입력
pstmt.setString(1, member.getnId());
pstmt.setString(2, member.getnPw());
pstmt.setString(3, member.getnName());
pstmt.setInt(4, member.getnAge());
pstmt.setString(5, member.getnGender());
pstmt.setString(6, member.getnEmall());
pstmt.setString(7, member.getnPhone());
int result = pstmt.executeUpdate();
if (result > 0) {
System.out.println("가입 성공");
} else {
System.out.println("가입 실패");
}
pstmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// idCheck()메소드 boolean타입가지고 if문을 가지고 각각의 조건을 가지고 구함
public boolean idCheck(String nId, String nPw) {
// 리턴값을 구하기 위한 변수 선언
boolean checkResult = false;
String sql = "SELECT * FROM NAVERT WHERE NID=? AND NPW=?"; //둘이 같아
try {
//준비단계
pstmt = con.prepareStatement(sql);
// sql문의 '?'에 데이터 넣기
pstmt.setString(1, nId);
pstmt.setString(2, nPw);
// 결과를 저장할 rs
// 실행 >> pstmt.executeQuery()
rs = pstmt.executeQuery();
// rs.next() >> 데이터가 있으면 ture , 없으면 false
if (rs.next()) {
// 아이디,비번 일치할때
checkResult = true;
} else {
// 사실 무의미함 이유 : 원래 checkResult가 = false 여서
// 아이디, 비번 하나라도 틀리면 실행
checkResult = false;
}
pstmt.close();
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
return checkResult;
}
// idCheck()메소드
// 아이디 비밀번호 일치 여부 확인 메소드 : 데이터타입 boolean
public boolean idCheck(String nId, String nPw) {
// 리턴값을 구하기 위한 변수 선언
boolean checkResult = false;
String sql = "SELECT * FROM NAVERT WHERE NID=? AND NPW=?"; //둘이 같아
try {
//준비단계
pstmt = con.prepareStatement(sql);
// sql문의 '?'에 데이터 넣기
pstmt.setString(1, nId);
pstmt.setString(2, nPw);
// 결과를 저장할 rs
// 실행 >> pstmt.executeQuery()
rs = pstmt.executeQuery();
// rs.next() >> 데이터가 있으면 ture , 없으면 false
if (rs.next()) {
// 아이디,비번 일치할때
checkResult = true;
} else {
// 사실 무의미함 이유 : 원래 checkResult가 = false 여서
// 아이디, 비번 하나라도 틀리면 실행
checkResult = false;
}
pstmt.close();
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
return checkResult;
}
// memberDelete() 메소드
public void memberDelete(String nId) {
String sql = "DELETE FROM NAVERT WHERE NID=?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, nId);
int result = pstmt.executeUpdate();
if (result > 0) {
System.out.println("삭제 성공");
} else {
System.out.println("삭제 실패");
}
pstmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// memberJoin1() 메소드
public void memberJoin1(NaverMember member) {
String sql = "UPDATE NAVERT SET " +
"NPW=?," +
"NName=?, " +
"NAge = ?, " +
"NGender = ?, " +
"NEmail = ?, " +
"NPhone = ? " +
"WHERE NID=?";
try {
pstmt = con.prepareStatement(sql);
// sql문의 첫번쨰 '?'에 member 객체의 nId값(getnId())를 입력
pstmt.setString(1, member.getnPw());
pstmt.setString(2, member.getnName());
pstmt.setInt(3, member.getnAge());
pstmt.setString(4, member.getnGender());
pstmt.setString(5, member.getnEmall());
pstmt.setString(6, member.getnPhone());
pstmt.setString(7, member.getnId());
int result = pstmt.executeUpdate();
if (result > 0) {
System.out.println(" 성공");
} else {
System.out.println(" 실패");
}
pstmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
[5]DB와 인텔리제이 연동2(NAVER_Main클래스)
// main()
public class NAVER_Main {
public static void main(String[] args) {
// CRUD 객체 선언
NAVER_CRUD crud = new NAVER_CRUD();
// CRUD 작업 시작!!!!
crud.NAVERDBConnection(); // DB접속
NaverMember member = new NaverMember();
Scanner sc = new Scanner(System.in);
boolean run = true;
int menu = 0;
// while문은 run이 false일때 까지 반복
while (run){
System.out.println("================================================");
System.out.println("1. DB접속 2. 접속해제 3. 회원가입 4. 회원목록");
System.out.println("5. 회원수정 6. 회원삭제 7. 종료");
System.out.println("================================================");
System.out.println("선택>>");
menu = sc.nextInt();
// swith문 case 1,2,3,4,5,6,7
// case1 DB연결
switch (menu){
case 1:
crud.NAVERDBConnection();
break;
// case2 접속해체
case 2:
crud.conClase();
break;
// case3 회원가입
// memberJoin으로 불러와서 각각 입력받는다
case 3:
System.out.println("회원정보를 입력!");
System.out.println("아이디 : ");
String nId = sc.next();
System.out.println("비번 : ");
String nPw = sc.next();
System.out.println("이름 : ");
String nName = sc.next();
System.out.println("나이 : ");
int nAge = sc.nextInt();
System.out.println("성별 : ");
String nGender = sc.next();
System.out.println("이메일 : ");
String nEmail = sc.next();
System.out.println("연락처 : ");
String nPhone = sc.next();
// 입력 정보를 담는다
member.setnId(nId);
member.setnPw(nPw);
member.setnName(nName);
member.setnAge(nAge);
member.setnGender(nGender);
member.setnEmall(nEmail);
member.setnPhone(nPhone);
crud.memberJoin(member);
break;
// case4 회원목록을 그대루
case 4:
crud.select();
break;
// case5 boolean타입으로 각각의 조건을 나타냄
case 5:
System.out.print("삭제할 아이디 : ");
nId = sc.next();
System.out.print("비번 : ");
nPw = sc.next();
boolean check2 = crud.idCheck(nId, nPw);
if(check2){
System.out.println("아이디와 비밀번호가 일치합니다");
System.out.print("수정할 비번 : ");
String cPw = sc.next();
System.out.print("수정할 이름 : ");
String cName = sc.next();
System.out.print("수정할 나이 : ");
int cAge = sc.nextInt();
System.out.print("수정할 성별 : ");
String cGender = sc.next();
System.out.print("수정할 이메일 : ");
String cEmail = sc.next();
System.out.print("수정할 번호 : ");
String cPhone = sc.next();
member.setnId(nId);
member.setnPw(cPw);
member.setnName(cName);
member.setnAge(cAge);
member.setnGender(cGender);
member.setnEmall(cEmail);
member.setnPhone(cPhone);
crud.memberJoin1(member);
}else {
System.out.println("아이디와 비밀번호가 일치하지 않습니다.");
}
break;
// case6,7
case 6:
System.out.print("삭제할 아이디 : ");
nId = sc.next();
System.out.print("비번 : ");
nPw = sc.next();
boolean check1 = crud.idCheck(nId, nPw);
if(check1){
System.out.println("아이디와 비밀번호가 일치합니다");
// 삭제 메소드 작성
crud.memberDelete(nId);
}else {
System.out.println("아이디와 비밀번호가 일치하지 않습니다.");
}
break;
case 7:
run = false;
break;
default:
System.out.println("다시 입력하시오");
break;
}
}
}
'IT코딩공부!' 카테고리의 다른 글
#20 HTML 공부 시작!!! (툴 : vscode) (0) | 2023.04.26 |
---|---|
#19 (은행) DB+인텔리제이 (0) | 2023.04.14 |
#17 DB (JOIN) OR 인텔리제이+ORACLE 연동 (0) | 2023.04.12 |
#16 !CONSTRAINT(제약조건)! (0) | 2023.04.11 |
#15 집합 (0) | 2023.04.10 |