sql 사용할때 주의하기

수돌임깅·2023년 8월 9일
0
//회원목록
	public ArrayList<UserVO> list(String key,String query,int page){
		ArrayList<UserVO> array= new ArrayList<UserVO>();
		try {
			String sql="select * from users where " + key + " like ? order by regDate desc limit ?,5";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setString(1, "%"+query+"%");
			ps.setInt(2, (page-1)*5);
			ResultSet rs=ps.executeQuery();
			while(rs.next()) {
				UserVO vo = new UserVO();
				vo.setUid(rs.getString("uid"));
				vo.setUpass(rs.getString("upass"));
				vo.setUname(rs.getString("uname"));
				vo.setPhone(rs.getString("phone"));
				vo.setAddress1(rs.getString("address1"));
				vo.setAddress2(rs.getString("address2"));
				vo.setRegDate(rs.getTimestamp("regDate"));
				vo.setPhoto(rs.getString("photo"));
				array.add(vo);
			}
		}catch(Exception e) {
			System.out.println("회원목록:" + e.toString());
		}
		return array;
	}

보면 string sql이 있는데,

String sql="select * from users where " + key + " like ? order by regDate desc limit ?,5";

여기를 아주 잘 보면 where 공백 공백 like부분을 볼 수 있다. 이게 제대로 되지 않으면
systax오류를 뿜는다 따라서 이렇게 할 때는 반드시 공백을 넣어야 하고,

ps.setString(1, "%"+query+"%");

이렇게 하는 이유는 칼럼은 ?로 들어가지 못하기 때문이다.

profile
초보 개발자

0개의 댓글