728x90
반응형
Select = 조회구문
Select * from eaxm / exam의 테이블을 모두 보여주세요 !
매개변수 = 없음 // 위구문에서 위치홀더 '?' 가없다면 매개변수가 필요없다.
메소드 작성 양식은
접근제한자 반환형 이름(매개변수)
public List<ExamDto> select() throws Exception{
public List<ExamDto> select() throws Exception{
Connection con = JdbcUtils.connect(USERNAME, PASSWORD);
String sql = "select * from exam";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs =ps.executeQuery();
★Result rs =는 con.close() 를 지나게 되면 죽은 코드 이므로 복사해둔다
★복사해둘 저장소는 Collection의 List
★List사용이유는 순서를 저장하기 때문이다. (set 순서저장X map 값마다 이름부여 )
//1.비어있는 list 저장소를 생성한다
List<ExamDto> list = new ArrayList<>();
//2.데이터 개수만큼 반복을 수행한다.
while(rs.next()) {
examDto.setExamId(rs.getInt("exam_id"));//rs의 exam_id를 객체에 복사
examDto.setStudent(rs.getString("student"));//rs의 student를 객체에 복사
examDto.setSubject(rs.getString("subject"));//rs의 subject를 객체에 복사
examDto.setType(rs.getString("type"));//rs의 type을 객체에 복사
examDto.setScore(rs.getInt("score"));//rs의 score를 객체에 복사
//4. 만들어진 객체를 list에 추가한다
list.add(examDto);
}
con.close();
return list;
반환형이 List저장소 이기 떄문에 list를 반환해준다.
위 메소드를 이용하여 항목과 키워드로 검색이 가능한 메소드를 구현해보자
위에서 본 코드처럼 메소드의 양식은
Oracle에서 검색구문의 조건을 걸어본다치면
Select * from exam where no(항목)=?(키워드) 이런식일꺼다
접근제한자 반환형 이름(매개변수) 이다.
그렇다면 위 구문에서 매개변수는 항목 / 키워드를 이용하여 코드를 구성
public List<ExamDto> select(String column,String keyword) throws Exception{
Connection con = JdbcUtils.connect(USERNAME, PASSWORD);
//포함된거 like도 사용가능
String sql ="select * from exam where instr(#1,?)>0 order by #1 asc";
sql= sql.replace("#1", column);
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, keyword);
ResultSet rs = ps.executeQuery();
List<ExamDto> list = new ArrayList<>();
while (rs.next()) {
ExamDto examDto = new ExamDto();
examDto.setExamId(rs.getInt("exam_id"));
examDto.setStudent(rs.getString("student"));
examDto.setSubject(rs.getString("subject"));
examDto.setType(rs.getString("type"));
examDto.setScore(rs.getInt("score"));
list.add(examDto);
}
con.close();
return list;
}
사진이 작아 잘보이진 않지만 sql 구문 매개변수 그리고 ..?값에 값대입정도?..
★★
list만들어놓고 add안해서 추가/저장 안하는 실수가 많다. 조심하자
con.close 항상 연결은 종료하자 종료하지 않으면 터진다잉 !
instr(#1,0) >0 계속 >0 빼먹어서 오류난다..긴장해라잉.. 이런데에 시간버리지말고 .
public class Test18_1 {
public static void main(String[] args) throws Exception {
//member 목록과 검색을 한 번에
//1. 검색분류와 검색어가 없으면 목록을 조회하여 출력
//2. 검색분류와 검색어가 있으면 검색을 수행하여 출력
String column = "member_id";
String keyword = "test";
// boolean isSearch = column이 있고 keyword가 있으면;
boolean isSearch = (column != null && !column.equals(""))
&& (keyword != null && !keyword.equals(""));
System.out.println("isSearch = " + isSearch);
MemberDao memberDao = new MemberDao();
List<MemberDto> list;
if(isSearch) {
list = memberDao.search(column, keyword);
}
else {
list = memberDao.list();
}
for(MemberDto memberDto : list) {
System.out.println(memberDto);
}
}
}
자바에서는 0 과 null을 다르게 처리한다.. 아래의 예시를보자
'[DBMS] > - Oracle' 카테고리의 다른 글
[Oracle]DBCP (0) | 2022.05.31 |
---|---|
[Oracle]Jdbc,beans,delete (0) | 2022.05.31 |
[Oracle] jdbc,bean,update (0) | 2022.05.31 |
[Oracle] jdbc , beans (0) | 2022.05.31 |
[Oracle] jdbc (Select 원하는 항목 검사 ) (0) | 2022.05.31 |
댓글