명함관리 프로그램
-네이버 부스트코스
이러한 기능을 가지도록 프로그램을 만들면 되는 프로젝트이다.
1. MYSQL 데이터 베이스에서 사용자와 데이터베이스를 만들어준다.
create database card;
CREATE USER carduser@'%' IDENTIFIED BY '~~~~~';
GRANT ALL PRIVILEGES ON card.* TO carduser@'%';
FLUSH PRIVILEGES;
데이터베이스를 만들고 사용자를 생성하고 난 후 권한을 주었다.
2. MYSQL 로 자료값을 들어갈 수 있는 테이블을 만들어준다
주어진 maven프로젝트를 임폴트 해보면 BusinessCard라는 주어진 데이터를 객체화시켜주는 소스코드가 있다.
public BusinessCard(String name, String phone, String companyName) {
this.name = name;
this.phone = phone;
this.companyName = companyName;
this.createDate = new Date();
}
이름, 휴대폰번호, 회사이름, 그리고 날짜에 대한 어떤 타입인지 나와있다 이걸 보고 테이플 필드 타입을 성절 할 수 있다,
mysql로 들어가서
mysql> create table card
-> (
-> name VARCHAR(12) not null,
-> phone VARCHAR(12),
-> companyName VARCHAR(35),
-> createDate DATETIME
-> ,
-> PRIMARY KEY(name)
-> );
이렇게 테이블을 만들수 있다. 만들고 난 후 만들어졌는지 확인하기 위해 아래 코드를 입력하면 확인할 수 있다.
mysql> DESCRIBE card;
3. BusinessCardManagerDao 를 수정하여 추가 기능과 검색 기능을 만들면 된다.
추가하는 부분을 구현한것이다.
public BusinessCard addBusinessCard(BusinessCard businessCard){
// 구현하세요.
//name, phone ,companyName,createDate
Connection conn =null;
PreparedStatement ps =null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dbUrl, dbUser, dbpasswd);
String sql = "INSERT INTO card (name,phone, companyName, createDate) VALUES (?,?,?,?)";//어떤명령 수행
ps=conn.prepareStatement(sql);
ps.setString(1, businessCard.getName()); //?된 부분의 값을 넣어주는 역할
ps.setString(2, businessCard.getPhone());
ps.setString(3, businessCard.getCompanyName());//넣어주는 데이터 타입에 따라 setint,string
java.util.Date utilDate = businessCard.getCreateDate();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
ps.setDate(4, sqlDate);
ps.executeUpdate();
}catch(Exception ex) {
ex.printStackTrace();
}finally {
if(ps!=null) {
try {
ps.close();
} catch(Exception ex) {}
}
if(conn!=null) {
try {
conn.close();
} catch (Exception ex) {}
}
}
return businessCard;
}
검색하는 부분을 자바 코드이다.
public List<BusinessCard> searchBusinessCard(String keyword){
List<BusinessCard> list = new ArrayList<>();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
String sql ="SELECT * FROM card WHERE name =?";
// 구현하세요.
try(Connection conn=DriverManager.getConnection(dbUrl, dbUser, dbpasswd);
PreparedStatement ps= conn.prepareStatement(sql)
){
ps.setString(1, keyword);
try(ResultSet rs =ps.executeQuery()){
while(rs.next()) {
String rname =rs.getString(1);
String rphone =rs.getString(2);
String rcom =rs.getString(3);
Date rdate =rs.getDate(4);
BusinessCard cardp=new BusinessCard(rname,rphone,rcom);
cardp.setCreateDate(rdate);
list.add(cardp);
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
리스트로 반환명으로 잡혀있기에 while문을 사용하여 같은 이름을 모두 탐색하여 리스트에 저장하여 반환하도록 하였다.
결과
이렇게 예시로 주어진 프로젝트 개요처럼 잘 나오는 것을 확인할 수 있다.
반응형
'프로젝트' 카테고리의 다른 글
[리액트+스프링부트] Delivery Oracle 의 ERD 문서 (1) | 2024.07.18 |
---|---|
[리액트+스프링부트] Delivery Oracle 기획서 (0) | 2024.07.11 |
Tourify 프로젝트 (0) | 2024.05.06 |
[리액트 프로젝트] 프로젝트명 Tourify 기획서 (0) | 2024.05.02 |
[리액트 프로젝트] ArtKey (0) | 2024.04.03 |