상세 컨텐츠

본문 제목

[인턴 OJT 6일차] File I/O , DBAddressImpl 수정 및 복습

인턴

by 리잼 2022. 12. 20. 09:42

본문

반응형

static

여러개의 static path를 사용할 땐 주의해야한다

같은 path라면 문제 없지만 각각 다른 path를 사용하면 파일이 덮어지는 문제가 생김

File I/O delete

public int deleteAddressBook(AddressBookVo paramData) throws Exception {
		// 동일한 seqNum의 주소 정보를 addressBookList에 찾아 해당 index의 데이터를 삭제한다.
		//LOGGER.debug(addressBookList.indexOf(paramData)+" index of");
		//addressBookList.remove(addressBookList.set(addressBookList.indexOf(paramData), paramData));
		//for ( int i = 0; i >= addressBookList i++ ) {
		// addressBookList size = 4
		
		for ( int i = 0; i < addressBookList.size(); i++ ) {
			System.out.println("paramData.getSeqNum():"+paramData.getSeqNum());
			System.out.println("addressBookList.get(i).getSeqNum():"+addressBookList.get(i).getSeqNum());
			if ( paramData.getSeqNum() == addressBookList.get(i).getSeqNum() ) {
				addressBookList.remove(i);
			}
		}
		LOGGER.debug(paramData.getSeqNum() + "");
		LOGGER.debug("삭제된 seq : " + paramData.getSeqNum() + "" + paramData.getName() + " 님의 정보삭제 완료");
		saveAddressBook();
		return 0;
	}

수정될 seqNum와 같은 주소값을 같는 seq를 찾기위해 for문으로 주소를 찾은 후 매칭되는 seq를 삭제한다

Update

	public int updateAddressBook(AddressBookVo paramData) throws Exception {
		// 동일한 seqNum의 주소 정보를 addressBookList에 찾아 해당 index의 데이터를 치환한다.

		for ( int i = 0; i < addressBookList.size(); i++ ) {
			if ( paramData.getSeqNum() == addressBookList.get(i).getSeqNum() ) {
				addressBookList.set(i, paramData);				
			}
			else {
				LOGGER.debug("잘못된 값입니다.");
			}
		} 
		LOGGER.debug(paramData.getName() + " 님의 정보수정 완료");
		saveAddressBook();
		return 0;
	}

update도 delete와 같은 로직이기 때문에 seq를 기준으로 수정하고싶은 컬럼을 골라 값을 넣으면 수정이 가능하다.

DB

테이블 생성시

CREATE TABLE XXX (

) ENGINE=InnoDB DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI; 추가 해줘야함

Select

public List<AddressBookVo> selectAddressBookVos(AddressBookVo paramData){
		
		List<AddressBookVo> addressBookList = new ArrayList<AddressBookVo>();
		
		try (Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
				Statement stmt = conn.createStatement();) {
			
			ResultSet resultSet = stmt.executeQuery("SELECT * FROM tb_addressbook");
			while (resultSet.next()) {						// next()는 데이터를 처음부터 읽어오기 때문에 roof를 돌면서 한줄 씩 출력하게 하는 함수
				int seq		= resultSet.getInt(1); 
				String name		= resultSet.getString(2);
				String birth	= resultSet.getString(3);
				String _gender	= resultSet.getString(4);
				String phone	= resultSet.getString(5);
				String address	= resultSet.getString(6);
				
				Gender gender = Gender.getGender(_gender);
				
				// DB에서 가져온 데이터를 Vo에 담는다
				AddressBookVo addressBookVo = new AddressBookVo();
				addressBookVo.setSeqNum(seq);
				addressBookVo.setName(name);
				addressBookVo.setBirthday(birth);
				addressBookVo.setGender(gender);
				addressBookVo.setPhoneNumber(phone);
				addressBookVo.setAddress(address);
				// List에 한번에 Vo데이터를 담아준다.
				addressBookList.add(addressBookVo);
				
				LOGGER.debug(String.format("seq : %s, name : %s, gender : %s, birth : %s, phone : %s, address : %s", seq, name, gender, birth, phone, address ));
			}
			
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}
		
		for (AddressBookVo AddressBook : addressBookList) {
			LOGGER.debug(AddressBook.toString());
		}
		
		return addressBookList;
	}

insert

public int insertAddressBook(AddressBookVo paramData) throws Exception {
		String pstmtSql = "INSERT INTO tb_addressbook(NAME, GENDER, BIRTH, PHONE, ADDRESS) "
				+ "VALUES (?, ?, ?, ?, ?)";
		
		try (Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
				PreparedStatement pstmt = conn.prepareStatement(pstmtSql);
				//Statement stmt = conn.createStatement();
				){
			
			//1 Statement 방식
//			String insertSql = String.format("INSERT INTO tb_addressbook(NAME, GENDER, BIRTH, PHONE, ADDRESS) VALUES ('%s', '%s', '%s', '%s', '%s')", 
//									paramData.getName(), paramData.getGender(), paramData.getBirthday(), paramData.getPhoneNumber(), paramData.getAddress());
//			int result = stmt.executeUpdate(insertSql);
//			LOGGER.debug(result + "개 작업 수행 완료.");
//			
			// 2 PreparedStatement 방식
			pstmt.setString(1, paramData.getName());
			pstmt.setString(2, paramData.getGender().toString());
			pstmt.setString(3, paramData.getBirthday());
			pstmt.setString(4, paramData.getPhoneNumber());
			pstmt.setString(5, paramData.getAddress());

			int result2 = pstmt.executeUpdate();
			LOGGER.debug(result2 + "개 작업 수행 완료.");
			
		}
		return 0;
	}

Update

DBAddressBookImpl.java

DbTest.java

Delete

DBAddressBookImpl.java

DbTest.java

반응형

관련글 더보기

댓글 영역