반응형
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
반응형
'인턴' 카테고리의 다른 글
[인턴 OJT 8일차] Java swing Jframe, Jpanel, Layout (0) | 2022.12.21 |
---|---|
[인턴 OJT 7일차] mybatis (0) | 2022.12.21 |
[인턴 OJT 5일차] Java DB 연동 select, insert (0) | 2022.12.16 |
[인턴 OJT 4일차] 직렬화 ( serialization ), file i/o 기반 주소록 (0) | 2022.12.15 |
[인턴 OJT 3일차] Static, File I/O, Static, bit/byte (0) | 2022.12.14 |