[JAVA] JDBC crud

seonjeong·2023년 2월 10일
0

Java

목록 보기
17/26
post-thumbnail
  • executeQuery
    • ResultSet 객체의 값을 반환
    • select구문을 수행할 때 사용

  • ExecuteUpdate
    • Int 타입의 값을 반환
    • insert / update / delete 구문을 수행할 때 사용

  • PreparedStatement
    • Statement 클래스의 기능 향상
    • 인자와 관련된 작업이 특화(매개변수)
    • String형태의 SQL문을 SQL문으로 변환시켜서 DB 서버에 보내줌

🔥 Insert

public boolean insert(String id, String name, int age) {
	// insert 구문 작성
	String sql = " insert into user(id, name, age, joindate) "
    		    +" values(?, ?, ?, now()) ";
	
    Connection conn = null;
    PrepareStatement psmt = null;
    
    int count = 0;
    
    try {
			conn = DBConnection.getConnection();	// connection 정보
			psmt = conn.prepareStatement(sql);	// 1. sql문을 실행시켜 틀을 만들고
			
			// 2. 값을 넣어준다
			psmt.setString(1, id);	// (index,String) -> db는 1부터
			psmt.setString(2, name);
			psmt.setInt(3, age);
			
			count = psmt.executeUpdate();
			
			System.out.println("성공적으로 추가되었습니다");
			
		} catch (SQLException e) {
			System.out.println("추가되지 않았습니다");
			e.printStackTrace();
		} finally {
			DBClose.close(conn, psmt, null);
		}
		
		return count > 0;	// == count > 0?true:false
}

🔥 Select

  • 하나의 데이터만 탐색할 경우
public UserDto search(String id) {
	String sql = " select id, name, age, joindate "
               + " from user "
               + " where id = ? ";
               
    Connection conn = null;
    PrepareStatement = psmt = null;
    ResultSet rs = null;
    
    UserDto user = null;
    
    try {
			conn = DBConnection.getConnection();
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, id);
			
			rs = psmt.executeQuery();	// 객체값 반환
			
			if(rs.next()) {	// 결과값이 있었을 때(true)
				String _id = rs.getString(1);	// 컬럼명 or index(1~)
				String _name = rs.getNString(2);
				int _age = rs.getInt(3);
				String _joindate = rs.getString(4);
				
				user = new UserDto(_id, _name, _age, _joindate);
			}
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		DBClose.close(conn, psmt, rs);
	}
	return user;	// 없을 경우 null, 있을 경우 객체가 리턴
}
  • 다수의 데이터를 탐색할 경우
public List<UserDto> select() {
	String sql = " select id, name, age, joindate "
    		   + " from user ";

	Connection conn = null;
    PrepareStatement psmt = null;
    ResultSet rs = null;
    
    List<UserDto> list = new ArrayList<>();
    
    try {
			conn = DBConnection.getConnection();
			psmt = conn.prepareStatement(sql);
			rs = psmt.executeQuery();
			
			while(rs.next()) {	// 계속 참일 때 다음으로 넘어감
				String _id = rs.getString(1);
				String _name = rs.getString(2);
				int _age = rs.getInt(3);
				String _joindate = rs.getString(4);
				
				UserDto user = new UserDto(_id, _name, _age, _joindate);
				
				list.add(user);
			}
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		DBClose.close(conn, psmt, rs);
	}
	return list;
}

🔥 Update

public boolean update(String id, String name, int age) {
	String sql = " update user "
    		   + " set name = ?, age = ? "
               + " where id = ? ";
               
	Connection conn = null;
    PrepareStatement psmt = null;
    
    int count = 0;
    
    try {
			conn = DBConnection.getConnection();
            
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, updateName);
			psmt.setInt(2, updateAge);
			psmt.setString(3, id);
			
			count = psmt.executeUpdate();
			
	} catch (SQLException e) {
		System.out.println("업데이트되지 않았습니다.");
		e.printStackTrace();
	} finally {
		DBClose.close(conn, psmt, null);
	}
	return count > 0?true:false;		
}

🔥 Delete

public boolean delete(String id) {
	String sql = " delete from user "
			+ "    where id= ? ";
		
	Connection conn = null;
	PreparedStatement psmt = null;
		
	int count = 0;
		
	try {
		conn = DBConnection.getConnection();
        // 얼마나 진행됐는지 알기위함
        System.out.println("1/3 delete success");	
        
		psmt = conn.prepareStatement(sql);	
		psmt.setString(1, id);
        System.out.println("2/3 delete success");
			
		count = psmt.executeUpdate();
        System.out.println("3/3 delete success");
			
	} catch (SQLException e) {
		System.out.println("delete fail");
		e.printStackTrace();
	} finally {
		DBClose.close(conn, psmt, null);
	}	
	return count > 0?true:false;
}
profile
🦋개발 공부 기록🦋

0개의 댓글

관련 채용 정보