달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 6. 26. 01:31

게시판 다음글 이전글 Study/Database2010. 6. 26. 01:31

쿼리로 간단히 해결

<!-- 이전글

select * from bbs where idx = (select max(idx) from bbs where idx<?)

<!-- 다음글

select * from bbs where idx = (select min(idx) from bbs where idx>?)
:
Posted by 유쾌한순례자
2010. 6. 26. 01:18

Blog처럼 만들어주기. Study/WEB2010. 6. 26. 01:18

기존에는 조직도가 이미지로 되어있고 개별 부서의 페이지를 전산팀에서 직접해주었는데 이번에 통합프레임워크를 추진하면서 이번 기회에 이것도 고치자 하여 시작한 일명 blog 프로젝트!!
생각은 꽤나 어려울 것 같았는데.. 생각보다 무진장 쉽게했다.
위치값을 정하여 Database에 집어넣어주면 땡..-..-; 그 다음 관리자 아이디를 가진 사람이 수정 할 수 있게 해주면 되니까.
다만 표를 깔끔하게 만드는게 어려울 뿐.. oㅅo
뭐 나야 구동되게 해주고 원하는 기능 구현해주면 다른 사람이 알아서 디자인 해주니까 편하긴하다.

:
Posted by 유쾌한순례자

public static String replace(String str, String oldstr, String newstr)
 {
  if (str == null)
   return null;

  String ans = "";
  int len = oldstr.length();
  int strlen = str.length();
  int pos = 0;
  int oldpos = 0;

  while ((pos = str.indexOf(oldstr, oldpos)) >= 0)
  {
   ans += str.substring(oldpos, pos) + newstr;
   oldpos = pos + len;
  }
  ans += str.substring(oldpos, strlen);

  return ans;
 }

이걸 만들고..
파라미터값으로 받아와서 이런식으로 처리해줬었다.

String value1 = Util.replace(paramter, "<", "&lt;");
String value2 = Util.replace(value1, ">", "&gt;");

근데 SQL INJECTION은 우회가 너무 쉬워서 짜증난다.. 완벽한 방어법은 없겠지.

:
Posted by 유쾌한순례자
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME
FROM DBA_CONSTRAINTS
WHERE CONSTRAINT_name ='SYS_C004414';

저기서 where 조건에서 찾아준건 제약조건 이름..

자식 테이블에서 삭제 시도하면

ORA-02292: integrity constraint (제약조건이름) violated - child record found

이런식으로 떠버려서..

사실 처음부터 개발자가 직접 제약조건을 설정하고 이랬다면 기억해둬서 부모테이블에서 삭제해주면 되는데

유지보수 경우에는 이런거 모르면 저런식으로 찾아봐서 부모테이블 가서 삭제해준다.
:
Posted by 유쾌한순례자
2010. 6. 26. 01:03

group by 절에 함수를..ㄷㄷㄷ Study/Database2010. 6. 26. 01:03


성능상은 모르겠다.

날짜 필드가

2010-01-01 11:11:22   이런식으로 들어간다.

클라이언트의 요구는 1월 1일  몇 건 // 1월 2일 몇건

이런식으로 나오게... 였다

간단하게 해결 할 수 있을 줄 알았는데 생각외로 잘 안되서,,

이게 맞는 방법인가는 몰겠다만,

select CONVERT(VARCHAR(10),날짜필드,120) as 날짜필드, count(방문자)

from 방문

where 날짜필드 between 'A' and 'B'

group by convert(varchar(10),날짜필드,120)


그냥 group by 절에 select 문에 사용한 convert 를 사용해주니 되더라 '-'..

성능상은 왠지 딱 봐도 별로같다 ㅋㅋㅋㅋ

근데 몇 만건 씩 count 되는데 4초 정도면 -ㅁ- 걍 봐줄만한건가,, 아니면 느린거에 익숙해진건가,,

:
Posted by 유쾌한순례자