mysql simple db 프로젝트
MySQL에서 작성한 DB를 이클립스와 연결하여
직원정보를 조회하는 프로그램 작성
MySQL 테이블 생성 및 정보 insert(삽입)
insert into employee(name,dob,department) values("김길동","1991-12-12","마케팅");
insert into employee(name,dob,department) values("둘리","1992-05-12","회계부");
insert into employee(name,dob,department) values("라이언","1988-07-21","개발부");
insert into employee(name,dob,department) values("울버린","1989-06-24","지원부");
select * from employee;
이클립스 연결 테스트
package webapp.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConn {
static Connection conn =null;
public static Connection getConnection(){
String url= "jdbc:mysql://localhost:3306/simpledb?useSSL=false";
String user = "root";//접속 유저
String password = "1234";//비밀 번호
try {
conn = DriverManager.getConnection(url,user,password);
System.out.println("DB 연결 완료!");
} catch (SQLException e) {
System.out.println("DB에 연결할 수 없습니다.");
}
try {
conn.close();
} catch (SQLException e) {
}
return conn;
}
}
직원DAO 인터페이스(추상메소드)
package webapp.dao;
import java.util.List;
import webapp.model.Employee;
public interface EmployeeDAO {
//모든 직원 리스트 가져오기 (select)
List<Employee> get();
//id로 한명 직원 검색해 가져오기(select)
Employee get(int id);
//새 직원정보 저장하기(저장 성공 시 true 리턴)
boolean save(Employee employee);
//id로 해당 직원 삭제하기(삭제 성공 시 true 리턴)
boolean delete(int id);
//id로 직원업데이트
boolean update(Employee employee);
}
인터페이스 구현은 EmployeeDAOImple 클래스에서 한다.
1) List<Employee> get()
public class EmployeeDAOImple implements EmployeeDAO{
//add un implements 클릭
Connection connection = null;
Statement statement = null; //쿼리문을 사용 객체 (변수없음) // 요청
PreparedStatement preparedStatement = null;//쿼리문을 사용 객체 (변수가능)// 요청
ResultSet resultSet = null; //DB에서 나온 데이터 결과 저장 객체( SELECT문 결과)
@Override
//모든 직원 리스트 가져오기
public List<Employee> get() {
List<Employee> list = null;//직원리스트
try {
list= new ArrayList<Employee>();
String sql = "SELECT * FROM employee";//실행할 sql SELECT문
connection = DBConn.getConnection();//DB연결
//statement은 connection이 있어야 쓸 수 있음.
statement = connection.createStatement();//연결한 DB객체로 SQL객체 만들기
resultSet = statement.executeQuery(sql);//SQL문 실행하고 결과를 rsultSet에 받기
//다음줄(행)이 있으면 계속된다. 다음줄이 없으면(null) false반환 해서 반복문 종료
while(resultSet.next()) { //데이터가 여러 줄 이기 때문에 한줄씩 실행함.
Employee emp = new Employee();//직원 객체 생성
emp.setId(resultSet.getInt("id")); //열이 id인 데이터 값을 입력
emp.setName(resultSet.getString("name"));//열이 name인 데이터 값 입력
emp.setDepartment(resultSet.getString("department"));////열이 department인 데이터 값 입력
emp.setDob(resultSet.getString("dob"));//열이 dob인 데이터 값 입력
list.add(emp); //list에 emp의 값들을 모두 추가한다.
}
} catch (SQLException e) {
e.printStackTrace();
}
return list; //모든행을 입력한 직원리스트 리턴한다.
//당장 테스트 해볼려면 콘솔활용=> 테스트 패키지 만들기
}
test 클래스 만들어서 List<Employee> get() 테스트해보기
package test;
import java.util.List;
import webapp.model.Employee;
import webapp.model.EmployeeDAOImple;
public class TestDB {
public static void main(String[] args) {
//EmployeeDAOImple get() test
EmployeeDAOImple dao = new EmployeeDAOImple();
List<Employee> list = dao.get();
for(Employee e :list) {
System.out.println(e); //java aplication 으로 f11실행
}
}
}
2) Employee get(int id)
@Override
//한명의 직원 정보 가져오기
public Employee get(int id) {
Employee emp = null; //get() 안의 try catch 복사
try {
String sql = "SELECT * FROM employee WHERE id="+id;//실행할 sql SELECT문 + WHERE 조건문 (직원)
connection = DBConn.getConnection();//DB연결
//statement은 connection이 있어야 쓸 수 있음.
statement = connection.createStatement();//연결한 DB객체로 SQL객체 만들기
resultSet = statement.executeQuery(sql);//SQL문 실행하고 결과를 rsultSet에 받기
//다음줄(행)이 있으면 계속된다. 다음줄이 없으면(null) false반환 해서 반복문 종료
while(resultSet.next()) {
emp = new Employee();//직원 객체 생성
emp.setId(resultSet.getInt("id")); //열이 id인 데이터 값을 입력
emp.setName(resultSet.getString("name"));//열이 name인 데이터 값 입력
emp.setDepartment(resultSet.getString("department"));////열이 department인 데이터 값 입력
emp.setDob(resultSet.getString("dob"));//열이 dob인 데이터 값 입력
}
} catch (SQLException e) {
e.printStackTrace();
}
return emp;
}
test
새로운 직원 추가하기(저장하기)
3) save(Employee emp)
@Override
//직원 정보 저장하기
public boolean save(Employee emp) {
boolean flag = false; // 저장성공이 아니면 실패
try {
String sql = "INSERT INTO employee(name, department, dob) VALUES(?,?,?)";
connection = DBConn.getConnection();
preparedStatement = connection.prepareStatement(sql);
//변수 값을 입력할때는 preparedStatement 사용해서 변수입력함.
preparedStatement.setString(1, emp.getName());//첫번째 ? 입력
preparedStatement.setString(2, emp.getDepartment());//두번째 ? 입력
preparedStatement.setString(3, emp.getDob());//세번째 ? 입력
preparedStatement.executeUpdate();//입력,삭제,업데이트시 executeUpdate()리턴없음
flag= true;// 입력완료. 성공함
} catch (SQLException ex) {
ex.printStackTrace();
}
return flag;
}
test
Employee emp = new Employee();
emp.setName("무지");
emp.setDepartment("마케팅");
emp.setDob("1998-10-21");
dao.save(emp);
직원 삭제하기
3) delete(int id)
@Override
//직원 삭제하기
public boolean delete(int id) {
boolean flag = false; // 삭제성공이 아니면 실패
try {
String sql = "DELETE FROM employee WHERE id=?";
connection = DBConn.getConnection();
preparedStatement = connection.prepareStatement(sql);
//변수 값을 입력할때는 preparedStatement 사용해서 변수입력함.
preparedStatement.setInt(1, id);//첫번째 ? 입력
preparedStatement.executeUpdate();//입력,삭제,업데이트시 executeUpdate()리턴없음
flag= true;// 삭제완료.
} catch (SQLException ex) {
ex.printStackTrace();
}
return flag;
}
test
System.out.println("삭제하기");
dao.delete(7);
직원 정보 수정하기(update)
4) update(Employee emp)
@Override
//직원 업데이트(수정)하기
public boolean update(Employee emp) {
boolean flag = false; // 업데이트 성공이 아니면 실패
try {
String sql = "UPDATE employee SET name=?, department=?, dob=? WHERE id=?";
connection = DBConn.getConnection();
preparedStatement = connection.prepareStatement(sql);
//변수 값을 입력할때는 preparedStatement 사용해서 변수입력함.
preparedStatement.setString(1, emp.getName());//첫번째 ? 입력
preparedStatement.setString(2, emp.getDepartment());//두번째 ? 입력
preparedStatement.setString(3, emp.getDob());//세번째 ? 입력
preparedStatement.setInt(4, emp.getId());//네번째 ? 입력
preparedStatement.executeUpdate();//입력,삭제,업데이트시 executeUpdate()리턴없음
flag= true;// 업데이트 완료.
} catch (SQLException ex) {
ex.printStackTrace();
}
return flag;
}
test
Employee emp = new Employee();
emp.setId(4);
emp.setName("울베린");
emp.setDepartment("개발부");
emp.setDob("1978-01-21");
dao.update(emp);
<정리>
Connection : DB연결함
Statement : 쿼리문을 사용 객체 (변수없음) // 요청
PreparedStatement : 쿼리문을 사용 객체 (변수가능)// 요청 -> ' ? '에 값 입력가능함.
ResultSet // DB에서 요청한 데이터 결과 저장 객체( SELECT문에만 사용하고 나머지 쿼리문에는 사용안함)
Connection -> Statement OR PreparedStatement ->ResultSet
'DB > MySQL' 카테고리의 다른 글
데이터베이스 (스키마) 한 파일로 묶어 내보내기 export (0) | 2023.09.27 |
---|---|
Simple DB 프로젝트-3 (0) | 2023.09.21 |
Simple DB 프로젝트-2 (0) | 2023.09.21 |